public override void SendMessage(Message message) { if (_service != null) { lock (_sendingMsgCache) { var copy = Message.New(message.MessageType); var read = new BitDataInputStream(_exchange); var write = new BitDataOutputStream(_exchange); message.WriteTo(write); copy.ReadFrom(read); _sendingMsgCache.Add(copy); Monitor.Pulse(_sendingMsgCache); } } else { var identifiedMsg = message as IdentifiedMessage; if (identifiedMsg != null) { if (_messageReceiverDict.TryGetValue(IdentifiedMessage.MESSAGE_TYPE, out List <IMessageReceiver> receivers)) { foreach (var receiver in receivers) { receiver.MessageReceived(new IdentifiedMessage() { resp = true, guid = identifiedMsg.guid, innerMessage = null }); } } } } }
public static Networkf.Message ParseMessage(byte[] buf, ref int i) { int type = ReadMessageType(buf, ref i); var stream = new BitDataInputStream(buf, i); var message = Message.New(type); message.ReadFrom(stream); i = stream.i; return(new NetworkfMessage(message)); }