public void HandleNewMessageData(TCPReceivePackage package) { if(_nByteReceiveCount == 0) { //Attempt to build message from package Message message; MessageBuilder.BuildReceiveMessage(package, out message); NotifyMessageReceived(message); } else { imageBuffer = AppendBytes(imageBuffer, package.Data); if(imageBuffer.Length == _nByteReceiveCount) { //Done receiving image //Build image message ImageMessage message; MessageBuilder.BuildImageMessage(imageBuffer, out message); NotifyMessageReceived(message); //Set the receiving count to to switch the message processor mode back to regular message processing _nByteReceiveCount = 0; } else { //Contiue processing the receipt of an image } } }
protected override void OnMessageReceived(byte[] messageData) { //Build the received message package TCPReceivePackage package = new TCPReceivePackage(); package.Data = messageData; //Notfiy delegate NotifyMessageReceived(package); }
protected override void OnMessageReceived(byte[] messageData) { //Build the received message package TCPReceivePackage package = new TCPReceivePackage(); package.Data = messageData; package.SendingParticipantID = _clientID; //Notfiy delegate NotifyMessageReceived(package); }
public static bool BuildReceiveMessage(TCPReceivePackage package, out Message message) { message = null; bool bReturn = true; //Get message type var strData = Encoding.ASCII.GetString(package.Data); using (XmlReader reader = XmlReader.Create(new StringReader(strData))) { if (!reader.ReadToFollowing("message")) { Log.debug("Unknown message received."); return false; } else { while (reader.MoveToNextAttribute()) { switch (reader.Name) { case "type": { if (reader.Value == "register_media_consumer_response") { Log.info(String.Format("Received message: {0}", reader.Value)); message = BuildRegisterMessageResponse(); } else if(reader.Value == "image_receive_request") { Log.info(String.Format("Received message: {0}", reader.Value)); message = BuildRegisterMessageResponse(); } else { Log.info(String.Format("Message type {0} not handled", reader.Value)); return false; } } break; default: Log.info("Message type is unknown. Will not be processed."); return false; break; } } } } return bReturn; }
private void NotifyMessageRecieved(TCPReceivePackage message) { foreach (IDataReceivedEventHandler handler in _dataReceivedEventHandlers) { handler.OnDataRecevied(message); } }
protected void NotifyMessageReceived(TCPReceivePackage package) { MessageReceiveDelegate.OnNewTCPReceivePackage(package); }
void IClientMessageEventDelegate.OnNewTCPReceivePackage(TCPReceivePackage package) { _messageReceiveProcessor.HandleNewMessageData(package); }