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 static Message BuildRegisterMessageResponse()
 {
     Message message = new Message();
     message.Type = MessageType.RegisterMessageResponse;
     return message;
 }
 void IMessageReceiveDelegate.HandleMessageReceived(Message message)
 {
     NotifyNewMessageReceived(message);
 }
 private void NotifyMessageReceived(Message message)
 {
     if(MessageReceiveDelegate != null)
     {
         MessageReceiveDelegate.HandleMessageReceived(message);
     }
 }
 private void NotifyNewMessageReceived(Message message)
 {
     foreach(IMessageHandler handler in _messageEventHandlers)
     {
         handler.OnNewMessageEvent(message);
     }
 }