use std::net::SocketAddr;
use fibers::Spawn;
use Client;
use transport::UdpTransport;
use message::RawMessage;
use super::BaseClient;
pub type UdpCallRaw =
<BaseClient<UdpTransport> as Client>::CallRaw;
pub type UdpCastRaw =
<BaseClient<UdpTransport> as Client>::CastRaw;
pub struct UdpClient(BaseClient<UdpTransport>);
impl UdpClient {
pub fn new<S: Spawn>(spawner: &S, server: SocketAddr) -> Self {
Self::with_transport(spawner, server, UdpTransport::new())
}
pub fn with_transport<S: Spawn>(spawner: &S,
server: SocketAddr,
transport: UdpTransport)
-> Self {
let inner = BaseClient::new(spawner, server, transport);
UdpClient(inner)
}
}
impl Client for UdpClient {
type CallRaw = UdpCallRaw;
type CastRaw = UdpCastRaw;
fn call_raw(&mut self, message: RawMessage) -> Self::CallRaw {
self.0.call_raw(message)
}
fn cast_raw(&mut self, message: RawMessage) -> Self::CastRaw {
self.0.cast_raw(message)
}
}