Actix TCP actor

Статус: Offline
Реєстрація: 20.04.2006
Повідом.: 38640
На 99.99% уверен, что ответа не будет, но не могу не спросить.
Нужен рабочий пример актора под конкретную версию фреймворка, который читает/пишет через LinesCodec из/в TcpStream, и желательно под супервайзором, который его рестартует при дисконнекте.
Блять, ни доков, ни примеров нормальных, нихуя. В разных версиях разный API, разные трейты, которые конфликтуют друг с другом, а еще этот ебаный зоопарк TcpStream из std, tokio и еще бог весть откуда.
Хотел было спросить на стековерфлоу, но там надо быть more specific, а я пока даже сформулировать нормально вопрос не в состоянии.

Вот определение, там еще добуя трейтов к нему, но они компилятся:
Код:
struct TcpClientActor {
    framed: actix::io::FramedWrite<
        String,
        WriteHalf<TcpStream>,
        LinesCodec,
    >,
}

выдает такую ошибку:
the trait `tokio:🇮🇴:async_write::AsyncWrite` is not implemented for `tokio:🇮🇴:split::WriteHalf<tokio::net::tcp::stream::TcpStream>`
Это в самой свежей версии. В предыдущих версиях этого нет, зато гора других ошибок в других местах.
 
Блять, да шо этой падле не хватает?
AsyncWrite заимплеменчен для WriteHalf в tokio:🇮🇴
Код:
impl<T: AsyncWrite> AsyncWrite for WriteHalf<T> {
    fn poll_write(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>,
        buf: &[u8],
    ) -> Poll<Result<usize, io::Error>> {
        let mut inner = ready!(self.inner.poll_lock(cx));
        inner.stream_pin().poll_write(cx, buf)
    }

    fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> {
        let mut inner = ready!(self.inner.poll_lock(cx));
        inner.stream_pin().poll_flush(cx)
    }

    fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> {
        let mut inner = ready!(self.inner.poll_lock(cx));
        inner.stream_pin().poll_shutdown(cx)
    }
}

У TcpStream, который T, он тоже есть.
Нихуя не пойму.
 
Короче, разобрался. Была беда с зависимостями.
Нафигачил акторов, гоняю сообщения между ними, сильно помогло, что когда-то ковырял эрланг и скалу (Akka), концептуально все очень похоже.
 
Назад
Зверху Знизу