Example #1
0
        /// <summary>
        ///
        /// </summary>
        private void Run()
        {
            while (true)
            {
                try
                {
                    //receive data size for the response
                    if (_connection != null)
                    {
                        _connection.Receive(_sizeBuffer, DATA_SIZE_BUFFER_LENGTH);

                        int rspLength = Convert.ToInt32(UTF8Encoding.UTF8.GetString(_sizeBuffer, 0, _sizeBuffer.Length));



                        if (rspLength > 0)
                        {
                            byte[] dataBuffer = new byte[rspLength];
                            _connection.Receive(dataBuffer, rspLength);

                            //deserialize the message
                            IResponse response = null;
                            if (_formatter != null)
                            {
                                response = _formatter.Deserialize(dataBuffer) as IResponse;
                            }

                            if (_eventListener != null)
                            {
                                _eventListener.ReceiveResponse(response);
                            }
                        }
                    }
                }
                catch (ThreadAbortException) { break; }
                catch (ThreadInterruptedException) { break; }
                catch (ConnectionException ce)
                {
                    if (_traceProvider != null)
                    {
                        _traceProvider.TraceError(Name + ".Run", ce.ToString());
                    }
                    if (_eventListener != null)
                    {
                        _eventListener.ChannelDisconnected(ce.Message);
                    }
                    break;
                }
                catch (Exception e)
                {
                    if (_traceProvider != null)
                    {
                        _traceProvider.TraceError(Name + ".Run", e.ToString());
                    }
                }
            }
        }
Example #2
0
            public void ChannelDisconnected(string reason)
            {
                if (_responseListener != null)
                {
                    _responseListener.ChannelDisconnected(reason);
                }

                if (_threadPool != null)
                {
                    _threadPool.ExecuteTask(new ChannelDisconnectEventTask(null, reason, _requestListener));
                }
                else
                {
                    _requestListener.ChannelDisconnected(null, reason);
                }
                //if (_requestListener != null)
                //    _requestListener.ChannelDisconnected(null, reason);
            }