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); }
/* * 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); }
public abstract List <object> Receive(IMessageCutter messageCutter);