コード例 #1
0
        public override List <object> Receive(IMessageCutter messageCutter)
        {
            List <object> messages = new List <object>();

            byte[] receivedBytes;
            while (client.Available > 0)
            {
                receivedBytes = client.Receive(ref remoteIpEndPoint); //UdpClient.Receive blocks until a message is received from a remote host.
                Log.Information("SOCKETREADLOG", remoteIpEndPoint.Address.ToString() + ":" + port + "\"||\"" + remoteIpEndPoint.ToString() + "\"||\"" + Encoding.ASCII.GetString(receivedBytes));
                messages.Add(Encoding.ASCII.GetString(receivedBytes));
            }
            return(messages);
        }
コード例 #2
0
        /*
         * public override string GetBuffer()
         * {
         *  string buffer = state.sb.ToString();
         *  state.sb.Remove(0, state.sb.Length);
         *  _hasBuffer = false;
         *  canWriteBuffer = true;
         *  return buffer;
         *
         * }
         */

        public override List <object> Receive(IMessageCutter messageCutter)
        {
            List <object> messagesList = new List <object>();

            if (stateReceive != null)
            {
                // try
                //{

                stateReceived.Clear();
                stateReceived.AddRange(stateReceive);
                for (int i = 0; i < stateReceived.Count; i++)
                {
                    try
                    {
                        #region receive_handler
                        if (stateReceived[i] != null)
                        {
                            if (stateReceived[i].sb.Length > 0)
                            {
                                Log.Trace("TCPReceive handler.semaphore.WaitOne");
                                stateReceived[i].semaphore.WaitOne();
                                try
                                {
                                    try
                                    {
                                        messagesList.AddRange(messageCutter.Cut(ref stateReceived[i].sb));
                                    }
                                    catch (Exception e)
                                    {
                                        Log.Error(1017, String.Format("Problem with TCP messageCutter, Original message was discarded: {0} - Error: {1}", stateReceived[i].sb, e.ToString()));
                                    }

                                    if (messageCutter.hasAck)
                                    {
                                        if (messageCutter.messagesAck != null)
                                        {
                                            for (int z = 0; z <= messageCutter.messagesAck.Count - 1; z++)
                                            {
                                                Send(stateReceived[i].workSocket, messageCutter.messagesAck[z].ToString());
                                            }
                                            messageCutter.messagesAck.Clear();
                                        }
                                        messageCutter.hasAck = false;
                                    }
                                    Log.Trace("TCPReceive message received: " + stateReceived[i].sb.ToString());
                                    _hasBuffer = false;
                                }
                                catch (Exception e)
                                {
                                    Log.Error(1017, String.Format("Problem with TCP messageCutter, Message Format maybe wrong! Original message was discarded: {0} - Error: {1}", stateReceived[i].sb, e.ToString()));
                                    stateReceived[i].sb.Remove(0, stateReceived[i].sb.Length);
                                }
                                stateReceived[i].semaphore.Release();
                                Log.Trace("TCPReceive handler.semaphore.Release");
                            }
                            else
                            {
                                Log.Trace("Zero Bytes in TCP handler to be read!");
                            }
                        }
                        else
                        {
                            try
                            {
                                stateReceive.Remove(stateReceived[i]);
                            }
                            catch (Exception e)
                            {
                                Log.Error(1017, String.Format("Problem with TCP messageCutter, stateReceive Remove : {0}", e.ToString()));
                            }
                        }
                    }
                    #endregion
                    catch (Exception e)
                    {
                        Log.Error(1017, String.Format("Problem with TCP Receive MessageCutter : {0}", e.ToString()));
                    }
                }
                //}
                //catch (Exception except)
                //{
                //  Log.Error("TCPConnection: Problem with receive method" + except.ToString());
                // throw new UnexpectedErrorException("TCPConnection: Problem with receive method" + except.ToString());
                //}
            }
            else
            {
                Log.Trace("No sockts to be read!");
            }

            return(messagesList);
        }
コード例 #3
0
 public abstract List <object> Receive(IMessageCutter messageCutter);