public TcpSocketSaeaClient(IPEndPoint remoteEP, IPEndPoint localEP, ITcpSocketSaeaClientEventDispatcher dispatcher, TcpSocketSaeaClientConfiguration configuration = null)
        {
            if (remoteEP == null)
            {
                throw new ArgumentNullException("remoteEP");
            }
            if (dispatcher == null)
            {
                throw new ArgumentNullException("dispatcher");
            }

            _remoteEndPoint = remoteEP;
            _localEndPoint  = localEP;
            _dispatcher     = dispatcher;
            _configuration  = configuration ?? new TcpSocketSaeaClientConfiguration();

            if (_configuration.BufferManager == null)
            {
                throw new InvalidProgramException("The buffer manager in configuration cannot be null.");
            }
            if (_configuration.FrameBuilder == null)
            {
                throw new InvalidProgramException("The frame handler in configuration cannot be null.");
            }

            Initialize();
        }
 public TcpSocketSaeaClient(IPAddress remoteAddress, int remotePort, IPEndPoint localEP,
                            Func <TcpSocketSaeaClient, byte[], int, int, Task> onServerDataReceived = null,
                            Func <TcpSocketSaeaClient, Task> onServerConnected    = null,
                            Func <TcpSocketSaeaClient, Task> onServerDisconnected = null,
                            TcpSocketSaeaClientConfiguration configuration        = null)
     : this(new IPEndPoint(remoteAddress, remotePort), localEP,
            onServerDataReceived, onServerConnected, onServerDisconnected, configuration)
 {
 }
 public TcpSocketSaeaClient(IPEndPoint remoteEP,
                            Func <TcpSocketSaeaClient, byte[], int, int, Task> onServerDataReceived = null,
                            Func <TcpSocketSaeaClient, Task> onServerConnected    = null,
                            Func <TcpSocketSaeaClient, Task> onServerDisconnected = null,
                            TcpSocketSaeaClientConfiguration configuration        = null)
     : this(remoteEP, null,
            onServerDataReceived, onServerConnected, onServerDisconnected, configuration)
 {
 }
 public TcpSocketSaeaClient(IPEndPoint remoteEP, IPEndPoint localEP,
                            Func <TcpSocketSaeaClient, byte[], int, int, Task> onServerDataReceived = null,
                            Func <TcpSocketSaeaClient, Task> onServerConnected    = null,
                            Func <TcpSocketSaeaClient, Task> onServerDisconnected = null,
                            TcpSocketSaeaClientConfiguration configuration        = null)
     : this(remoteEP, localEP,
            new DefaultTcpSocketSaeaClientEventDispatcher(onServerDataReceived, onServerConnected, onServerDisconnected),
            configuration)
 {
 }
 public TcpSocketSaeaClient(IPEndPoint remoteEP, ITcpSocketSaeaClientEventDispatcher dispatcher, TcpSocketSaeaClientConfiguration configuration = null)
     : this(remoteEP, null, dispatcher, configuration)
 {
 }
 public TcpSocketSaeaClient(IPAddress remoteAddress, int remotePort, ITcpSocketSaeaClientEventDispatcher dispatcher, TcpSocketSaeaClientConfiguration configuration = null)
     : this(new IPEndPoint(remoteAddress, remotePort), dispatcher, configuration)
 {
 }