Nazar
вот бляха
Nazar
что же делать то...
Alexander
Alexander
https://stackoverflow.com/q/19646717
Alexander
Тут есть неплохой пример как сделать потокобезопасным, и не все функции вам нужны, но хз подойдёт ли такое
Nazar
а как мне буфер очищать?
Nazar
оно походу и в правду не работает
Nazar
из за того что в горутине
Alexander
Так и очищать как в примере, обернуть в враппер и использовать мьютексы
Alexander
Либо не используйте readFrom, и сами читайте в цикле
Alexander
Тут вам поможет конструкция select case default
Nazar
t := time.Now()
ticker := 1
out, _ := os.Create("test0.ts")
defer out.Close()
for {
io.CopyN(out, resp.Body, 1000)
if time.Since(t)-time.Second*6 >= time.Second {
t = time.Now()
out, _ = os.Create("test" + strconv.Itoa(ticker) + ".ts")
log.Println("Ss")
ticker++
}
}
Nazar
это вообще гавно?
Alexander
Case слушает тик, пишет в файл и очищает буфет
Alexander
А default читает из поток по N байт, так же как это делает readfrom
Alexander
И тогда reset будет работать
Alexander
Сейчас reset не работает, потому что буфет используется двумя потоками, первый внутри readfrom, второй горутина
Nazar
А что значит по н байт?
Nazar
Это сколько?
Nazar
func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error) {
b.lastRead = opInvalid
for {
i := b.grow(MinRead)
m, e := r.Read(b.buf[i:cap(b.buf)])
if m < 0 {
panic(errNegativeRead)
}
b.buf = b.buf[:i+m]
n += int64(m)
if e == io.EOF {
return n, nil // e is EOF, so return nil explicitly
}
if e != nil {
return n, e
}
}
}
не конца вдупляю
Alexander
Для ReadFrom это MinRead
Alexander
У вас может быть что-то другое, меньше, больше
Nazar
а подскажите на сколько это плохой варик?
Просто работает идеально
func dumpTS2HLS(url string, name string) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
t := time.Now()
ticker := 1
out, _ := os.Create(name + "0.ts")
defer out.Close()
for {
io.CopyN(out, resp.Body, 512)
if time.Since(t)-time.Second*6 >= time.Second {
READY++
log.Println(name + " ready: " + strconv.Itoa(READY))
t = time.Now()
out, _ = os.Create(name + strconv.Itoa(ticker) + ".ts")
ticker++
}
}
}
Заур
Наверно
Nazar
ООО
Nazar
блин
Nazar
пишет пустые файлы
Заур
Ээ
Nazar
в принципе
Nazar
вроде понял
Nazar
в чем ошибка
Nazar
мб выйдет даже пофиксить
Nazar
очень благодарен
Nazar
это выглядит уже адекватно
Заур
я сам новичок, так что пардон за нерабочий код, так и не понял в чём ошибка 😀
Nazar
о
Nazar
вот
Nazar
добавил перед io.Copy out.UpdateFile("test" + strconv.Itoa(0) + ".ts")
Nazar
)
Nazar
и тикер изначално 1
Nazar
по сути там нет файла же в начале
Nazar
и там нил заместо файла
Nazar
правда хз, почему не выбивает ошибки
Заур
Аа, блин
Nazar
Очень Вам благодарен )
Nazar
Я ещё чуть понаглею, вот бы логику как то запихнуть полностью в этот вапер (таймер, обновление файла и.д.)
Nazar
это нужно copy ещё намутить
Nazar
как врайт?
Nazar
переписать типа
Заур
Хм, ща
Заур
Вот так пойдет? https://play.golang.org/p/FF-qq78r2Gb
Заур
Функция New запустит все и вернёт враппер
Заур
На враппер можно навешать уже все функции старт стоп, хранить на нём каналы на выход и т.п.
Заур
А в аргументах New можно передать адрес сайта
Nazar
Я чуть не это имел ввиду, типа вот как работа с файлом
Nazar
толко это работа с таким недофайлом
Nazar
когда работаешь как с обычным потоком
Nazar
но на самом деле, там происходят страшные вещи
Nazar
но вроде понял куда копат
Nazar
Болшое вам спасибо
Заур
Заур
Чё там, кто хочет взять меня в сеньеры golangа с зп 100500 кк в наносекунду
Заур
?
aadz
Alexander
@goflood
Alexander
Давайте про нанокопейки тут
Илья
Криптокопейки
aadz
Нет, но Заур человеку мега помог! Но зачем же сразу про деньги? Да и работу тут в соседнем чате ищут
Alexey
Здравствуйте, друзья! Довелось писать на Go (опыта не имею). Подскажите пожалуйста как в GORM создать несколько записей в БД одним запросом? Сейчас использую код такого вида
db.Table("table").Create(&models.Data{
Field1: value1,
Field2: value2,
})
создающий записи по одной. Попытка передать слайс не увенчалась успехом
kås
Не нужен тебе горм
aadz
Надо открывать транзакцию и слать SQL в ней. Потом закрывать. Да даже и транзакцию не надо
aadz
aadz
для этого - точно не нужен
Заур
Заур
Похоже, юмор у голангистов такой же прямой и безхитростный, как и сам язык 😀
aadz
Да и на сишников очереди нет в тех странах, где мы живем. Что ж поделаешь? Вся эта очередь скоро будет стоять на аттракцион "избить депутатку яровую и ее подельников"
Заур