/// <summary>
 /// When a message is received on the specified UDP Multicast address/port.
 /// </summary>
 /// <remarks>
 /// Assumed to be not running under a thread safe context. As long as we don's access
 /// the socket referenced in the <see cref="MessageRequest"/> class we should be ok.
 /// <para></para>
 /// The buffer element is fine to access as it is created per call, regardless of which
 /// thread context has entered the ProcessMessage() method.
 /// </remarks>
 /// <param name="receivedByteCount">
 /// The number of bytes available to read.
 /// </param>
 /// <param name="state">
 /// The buffer state. 
 /// </param>
 private void OnMessageReceived(int receivedByteCount, MessageRequest state)
 {
     if (receivedByteCount > 0)
     {
         try
         {
             state.Execute();
         }
         catch (Exception ex)
         {
             m_Logger.Error("Exception detected handling message.", ex);
         }
     }
 }