public bool SendMessage(SMBMessage message)
        {
            bool bRet;

            SMBMessage[] messages;
            if (SMBMessage.RequiresChunking(((byte[])message.MessageObject).Length))
            {
                messages = SMBMessage.CreateChunkedMessages((byte[])message.MessageObject);
            }
            else
            {
                messages = new SMBMessage[] { message };
            }
            try
            {
                writeMutex.WaitOne();
                foreach (var msg in messages)
                {
                    bf.Serialize(serverStream, message);
                    serverStream.WaitForPipeDrain();
                }
                bRet = true;
            }
            catch (Exception ex)
            {
                bRet = false;
            }
            finally
            {
                writeMutex.ReleaseMutex();
            }
            return(bRet);
        }
 public override bool Send(string id, string message)
 {
     DebugWriteLine($"Encrypting MessageID {id} ({message.Length} bytes)...");
     byte[] reqPayload = Encoding.UTF8.GetBytes(cryptor.Encrypt(message));
     DebugWriteLine($"SUCCESS! Encrypted MessageID {id} ({message.Length} bytes)");
     SMBMessage[] messages;
     if (SMBMessage.RequiresChunking(reqPayload.Length))
     {
         messages = SMBMessage.CreateChunkedMessages(reqPayload);
     }
     else
     {
         messages = new SMBMessage[] { new SMBMessage()
                                       {
                                           MessageType   = "",
                                           MessageObject = reqPayload
                                       } };
     }
     try
     {
         DebugWriteLine($"Acquiring send message lock to send Message {id}...");
         writeMutex.WaitOne();
         DebugWriteLine($"LOCK ACQUIRED! Sending {messages.Length} SMB messages associated message inbox {id}...");
         int i = 0;
         foreach (var msg in messages)
         {
             bf.Serialize(serverStream, msg);
             serverStream.Flush();
             serverStream.WaitForPipeDrain();
             i++;
             DebugWriteLine($"Sent {i} of {messages.Length} SMB messages attached to Inbox ID {id} to {PipeName}");
         }
         //result = ReadDecryptedStringMessage();
     }
     finally
     {
         writeMutex.ReleaseMutex();
     }
     return(true);
 }