private void Send(EBrokerRequest request, string[] messageTypes) { using (EneterTrace.Entering()) { BrokerMessage aBrokerMessage = new BrokerMessage(request, messageTypes); Send(aBrokerMessage); } }
public _T Deserialize <_T>(object serializedData) { using (EneterTrace.Entering()) { if (serializedData is byte[] == false) { throw new ArgumentException("Input parameter 'serializedData' is not byte[]."); } if (typeof(_T) != typeof(BrokerMessage)) { throw new InvalidOperationException("Data can be deserialized only into" + typeof(BrokerMessage).Name); } BrokerMessage aResult; byte[] aData = (byte[])serializedData; using (MemoryStream aStream = new MemoryStream(aData)) { BinaryReader aReader = new BinaryReader(aStream); // Read broker request. int aBrokerRequestNumber = aReader.ReadByte(); EBrokerRequest aBrokerRequest = (EBrokerRequest)aBrokerRequestNumber; // Read number of message types. int aNumberOfMessageTypes = myEncoderDecoder.ReadInt32(aReader, myIsLittleEndian); // Read message types. string[] aMessageTypes = new string[aNumberOfMessageTypes]; for (int i = 0; i < aMessageTypes.Length; ++i) { string aMessageType = myEncoderDecoder.ReadPlainString(aReader, Encoding.UTF8, myIsLittleEndian); aMessageTypes[i] = aMessageType; } if (aBrokerRequest == EBrokerRequest.Publish) { object aPublishedMessage = myEncoderDecoder.Read(aReader, myIsLittleEndian); aResult = new BrokerMessage(aMessageTypes[0], aPublishedMessage); } else { aResult = new BrokerMessage(aBrokerRequest, aMessageTypes); } return((_T)(object)aResult); } } }
/// <summary> /// Constructs the message requesting the broker to subscribe or unsubscribe events. /// </summary> /// <param name="request">subscribing or unsubscribing</param> /// <param name="messageTypes">events to be subscribed or unsubscribed.</param> public BrokerMessage(EBrokerRequest request, string[] messageTypes) { Request = request; MessageTypes = messageTypes; Message = null; }