Esempio n. 1
0
        /// <summary>
        /// Create a TCP communications client.
        /// </summary>
        /// <param name="serverEndPoint">IP Address and Port combination of Server.</param>
        /// <param name="messageSink">The message sink to call for messages.</param>
        public Client(IPEndPoint serverEndPoint, ClientMessageSink messageSink)
        {
            _serverEndpoint = serverEndPoint;

            _messageSink = messageSink;

            _messageQueue = new GenericPCQueue <IrssMessage>(QueueMessageSink);
        }
Esempio n. 2
0
        internal static bool StartClient(IPEndPoint endPoint)
        {
            if (_client != null)
            {
                return(false);
            }

            ClientMessageSink sink = ReceivedMessage;

            _client = new Client(endPoint, sink);
            _client.CommsFailureCallback = CommsFailure;
            _client.ConnectCallback      = Connected;
            _client.DisconnectCallback   = Disconnected;

            if (_client.Start())
            {
                return(true);
            }

            _client = null;
            return(false);
        }
Esempio n. 3
0
        /// <summary>
        /// Connects the IR client to the host specified by the parameter <paramref name="endPoint"/>.
        /// </summary>
        /// <returns><c>true</c>, if the client could successfully be started, else <c>false</c>.</returns>
        public bool StartClient(IPEndPoint endPoint)
        {
            ServiceRegistration.Get <ILogger>().Info("IrInputPlugin: Connect to service ({0}:{1})", endPoint.Address, endPoint.Port);
            if (_client != null)
            {
                return(false);
            }

            ClientMessageSink sink = ReceivedMessage;

            _client = new Client(endPoint, sink)
            {
                CommsFailureCallback = CommsFailure,
                ConnectCallback      = Connected,
                DisconnectCallback   = Disconnected
            };

            if (_client.Start())
            {
                return(true);
            }
            _client = null;
            return(false);
        }
Esempio n. 4
0
        //------------------------------------------------------------------------------------------------------------------
        #region methods

        /// <summary>
        /// Connect the IRSS client to an IRSS server.
        /// </summary>
        /// <param name="host">Computer running the IRSS server to which the client should connect</param>
        /// <param name="millisecondsTimeout">Wait for the connection to succeed for that many milliseconds</param>
        /// <returns>true if the connection is successful</returns>
        public bool Connect(string host = "", int millisecondsTimeout = 10000)
        {
            // If connected, first disconnect
            if (Connected)
            {
                if (ServerHost == host)
                {
                    LogWarn("Already connected to " + ServerHost);
                    return(true);
                }
                else
                {
                    Disconnect();
                }
            }

            // reset connection states
            Connected = false;
            if (host == "")
            {
                host = ServerHost;
            }
            if (host == "")
            {
                host = "localhost";
            }


            IPAddress  serverIP = Network.GetIPFromName(host);
            IPEndPoint endPoint = new IPEndPoint(serverIP, Server.DefaultPort);

            ClientMessageSink sink = ReceivedMessage;

            irss = new Client(endPoint, sink);
            if (irss == null)
            {
                LogErr("Failed to open connection to " + host);
                return(false);
            }
            irss.CommsFailureCallback = CommsFailure;
            irss.ConnectCallback      = SocketConnected;
            irss.DisconnectCallback   = SocketDisconnected;

            bool ok = irss.Start();

            if (ok)
            {
                ServerHost = host;

                // Wait for the connection to occur.
                if (!_connectedEvent.WaitOne(millisecondsTimeout))
                {
                    LogErr("Failed to connect to " + ServerHost);
                    return(false);
                }

                LogInfo("Client connected to " + host);
                Connected = true;
            }

            return(ok);
        }
Esempio n. 5
0
    /// <summary>
    /// Create a TCP communications client.
    /// </summary>
    /// <param name="serverEndPoint">IP Address and Port combination of Server.</param>
    /// <param name="messageSink">The message sink to call for messages.</param>
    public Client(IPEndPoint serverEndPoint, ClientMessageSink messageSink)
    {
      _serverEndpoint = serverEndPoint;

      _messageSink = messageSink;
    }
Esempio n. 6
0
    internal static bool StartClient(IPEndPoint endPoint)
    {
      if (_client != null)
        return false;

      ClientMessageSink sink = new ClientMessageSink(ReceivedMessage);

      _client = new Client(endPoint, sink);
      _client.CommsFailureCallback = new WaitCallback(CommsFailure);
      _client.ConnectCallback = new WaitCallback(Connected);
      _client.DisconnectCallback = new WaitCallback(Disconnected);

      if (_client.Start())
      {
        return true;
      }
      else
      {
        _client = null;
        return false;
      }
    }
Esempio n. 7
0
        /// <summary>
        /// Create a TCP communications client.
        /// </summary>
        /// <param name="serverEndPoint">IP Address and Port combination of Server.</param>
        /// <param name="messageSink">The message sink to call for messages.</param>
        public Client(IPEndPoint serverEndPoint, ClientMessageSink messageSink)
        {
            _serverEndpoint = serverEndPoint;

            _messageSink = messageSink;
        }
Esempio n. 8
0
    /// <summary>
    /// Create a TCP communications client.
    /// </summary>
    /// <param name="serverEndPoint">IP Address and Port combination of Server.</param>
    /// <param name="messageSink">The message sink to call for messages.</param>
    public Client(IPEndPoint serverEndPoint, ClientMessageSink messageSink)
    {
      _serverEndpoint = serverEndPoint;

      _messageSink = messageSink;

      _messageQueue = new GenericPCQueue<IrssMessage>(QueueMessageSink);
    }