actix-telepathy 0.7.0

Cluster extension for the actix actor framework
Documentation
use crate::ClusterMessage;
use crate::codec::ConnectCodec;
use actix::io::{FramedWrite, WriteHandler};
use actix::prelude::*;
use std::io::Error;
use tokio::net::tcp::OwnedWriteHalf;

pub struct Writer {
    framed: Vec<FramedWrite<ClusterMessage, OwnedWriteHalf, ConnectCodec>>,
}

impl Writer {
    pub fn new(framed: FramedWrite<ClusterMessage, OwnedWriteHalf, ConnectCodec>) -> Self {
        Self {
            framed: vec![framed],
        }
    }

    fn transmit_message(&mut self, msg: ClusterMessage) {
        self.framed[0].write(msg);
    }
}

impl Actor for Writer {
    type Context = Context<Self>;
}

impl Handler<ClusterMessage> for Writer {
    type Result = ();

    fn handle(&mut self, msg: ClusterMessage, _ctx: &mut Self::Context) -> Self::Result {
        self.transmit_message(msg);
    }
}

impl WriteHandler<Error> for Writer {}
impl Supervised for Writer {}