Size: a a a

2018 July 29

A

Alik in Rust Async
Vladimir
Ну зачем его разделять на две части Бизнескейс какой
Я просто рассчитывал для каждого типа пакетов писать отдельный кодек, а так получается будет один гигантский
источник

V

Vladimir in Rust Async
у тебя сообщения в предсказуемом порядке идут?
источник

A

Alik in Rust Async
Vladimir
у тебя сообщения в предсказуемом порядке идут?
К сожалению нет)
источник

A

Alik in Rust Async
Вообщем-то никаких серьёзных причин, кроме эстетических нет
источник

V

Vladimir in Rust Async
ну тогда как ты это чисто с точки зрения потока выполнения хочешь организовать?
источник

D

Denis in Rust Async
Alik
Я просто рассчитывал для каждого типа пакетов писать отдельный кодек, а так получается будет один гигантский
ну почему гигантский, ты же можешь запилить элементарную стейт-машину, которая будет переключать текущий кодек, а каждый отдельный кодек.. ну, отдельно запилить :)
источник

D

Denis in Rust Async
decode() не просто так &mut self принимает )
источник

V

Vladimir in Rust Async
Alik
К сожалению нет)
тогда
Я бы предложил сделать
struct Message1Decoder;
struct Message2Decoder;

//impl decoder for this types.
enum ResultItem {
Message1(..);
Message2(..);
}
struct ProtocolDecoder;
Impl Decoder for ProtocolDecoder{
type Item=ResultItem;
источник

A

Alik in Rust Async
Vladimir
ну тогда как ты это чисто с точки зрения потока выполнения хочешь организовать?
У пакетов есть хедеры и даже сделан netchan умный https://github.com/dreamstalker/rehlds/blob/master/rehlds/engine/net_chan.cpp
источник

V

Vladimir in Rust Async
Ну просто вызывай внутри одного декодера декодер другого
источник

A

Alik in Rust Async
Vladimir
тогда
Я бы предложил сделать
struct Message1Decoder;
struct Message2Decoder;

//impl decoder for this types.
enum ResultItem {
Message1(..);
Message2(..);
}
struct ProtocolDecoder;
Impl Decoder for ProtocolDecoder{
type Item=ResultItem;
Я начинаю понемногу пропитываться философией Tokio
источник

V

Vladimir in Rust Async
профит
источник

D

Denis in Rust Async
Vladimir
Ну просто вызывай внутри одного декодера декодер другого
кстати да
источник

V

Vladimir in Rust Async
Denis
decode() не просто так &mut self принимает )
да ему поидее не нужен стейт, еслиб был порядок сообщений, тогда да
источник

D

Denis in Rust Async
блин, я уже в голове у себя почему-то решил, что следующие сообщения будут по-другому декодироваться, и исхожу из этого, хотя мне явно сказали, что нет) сорян
источник

D

Denis in Rust Async
ну короче мне кажется оптимальным внутри декодера дёргать другие декодеры
источник

A

Alik in Rust Async
Denis
ну короче мне кажется оптимальным внутри декодера дёргать другие декодеры
Мне тоже нравится эта идея
источник
2018 July 30

D

Denis in Rust Async
попробуй =) напиши потом, как пошло
довольно редкий (для меня) юзкейс, было бы интересно получить опыт)
источник

V

Vladimir in Rust Async
Denis
блин, я уже в голове у себя почему-то решил, что следующие сообщения будут по-другому декодироваться, и исхожу из этого, хотя мне явно сказали, что нет) сорян
а вот еслиб внутри, то не сильно понятно как со стримом работать в этом случае
есть какой-то
stream.take_one(|elem, stream|{...})?
источник

D

Denis in Rust Async
его нет, но легко сделать
источник