public RpcMessage(UInt32 transmissionID, RpcReply reply) : base(memberSerializers) { this.transmissionID = transmissionID; this.messageType = RpcMessageType.Reply; this.reply = reply; }
public RpcMessage(UInt32 transmissionID, RpcCall call) : base(memberSerializers) { this.transmissionID = transmissionID; this.messageType = RpcMessageType.Call; this.call = call; }
public RpcMessageHeader(XdrDataReader reader) { TransactionId = reader.ReadUInt32(); RpcMessageType type = (RpcMessageType)reader.ReadInt32(); if (type != RpcMessageType.Reply) { throw new NotSupportedException("Parsing RPC call messages"); } ReplyHeader = new RpcReplyHeader(reader); }
public RpcMessage(string message) { var messageParts = message.Split('|'); Type = (RpcMessageType)int.Parse(messageParts[1]); Id = messageParts[2]; if (Type == RpcMessageType.ActionRequest) { ParseActionRequest(messageParts); } else { ParseReturnedResult(messageParts); } }
/// <summary> /// The internal parse function for an RPC header. /// </summary> /// <param name="input">The input string.</param> internal void InternalParse(string input) { // split key pairs string[] keyPairs = input.Split(';'); foreach (string pair in keyPairs) { // get keypair string key = pair.Substring(0, pair.IndexOf('=')); string val = pair.Substring(pair.IndexOf('=') + 1); if (key.Length == 0 || val.Length == 0) { continue; } // lazily check values if (key.Equals("v", StringComparison.CurrentCultureIgnoreCase)) { _version = val; } else if (key.Equals("s", StringComparison.CurrentCultureIgnoreCase)) { _serializer = val; } else if (key.Equals("t", StringComparison.CurrentCultureIgnoreCase)) { if (val.Equals("single", StringComparison.CurrentCultureIgnoreCase)) { _type = RpcMessageType.Single; } else if (val.Equals("batch", StringComparison.CurrentCultureIgnoreCase)) { _type = RpcMessageType.Batch; } else { throw new NotImplementedException("The RPC message type is unsupported"); } } } if (_version == null || _serializer == null) { throw new Exception("The RPC message header did not specify a version and a serializer"); } }
/// <summary> /// Creates a new header from the provided component data. /// </summary> /// <param name="version">The version.</param> /// <param name="serializer">The serializer used.</param> /// <param name="type">The message type.</param> public RpcHeader(string version, string serializer, RpcMessageType type) { _type = type; _version = version; _serializer = serializer; }