Ejemplo n.º 1
0
 public RpcMessage(UInt32 transmissionID, RpcReply reply)
     : base(memberSerializers)
 {
     this.transmissionID = transmissionID;
     this.messageType    = RpcMessageType.Reply;
     this.reply          = reply;
 }
Ejemplo n.º 2
0
 public RpcMessage(UInt32 transmissionID, RpcCall call)
     : base(memberSerializers)
 {
     this.transmissionID = transmissionID;
     this.messageType    = RpcMessageType.Call;
     this.call           = call;
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
            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);
                }
            }
Ejemplo n.º 5
0
        /// <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");
            }
        }
Ejemplo n.º 6
0
 /// <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;
 }