// MessageToProtocolRequest // // Converts a IMessage representing a method call (IMethodCallMessage) // into the Ice protocol representation, and writes it to stream outStream. public static void MessageToProtocolRequest(Stream outStream, IMessage msg) { IMethodCallMessage mcall = msg as IMethodCallMessage; Ice.ProtocolWriter pw = new Ice.ProtocolWriter(outStream); // extract message bits from mcall Ice.Identity id = (Ice.Identity)mcall.LogicalCallContext.GetData("__iceIdentity"); string[] facetPath = (string[])mcall.LogicalCallContext.GetData("__iceFacetPath"); Ice.OperationMode opMode = (Ice.OperationMode)mcall.LogicalCallContext.GetData("__iceOperationMode"); Ice.Context ctx = (Ice.Context)mcall.LogicalCallContext.GetData("__iceContext"); bool oneWay = (bool)mcall.LogicalCallContext.GetData("__iceOneWay"); int thisRequestId = 0; if (!oneWay) { thisRequestId = IceChannelUtils.NextRequestId; } mcall.LogicalCallContext.SetData("__iceRequestId", thisRequestId); ParameterInfo[] paramInfos = mcall.MethodBase.GetParameters(); // Create an Ice protocol message pw.BeginMessage(Ice.MessageType.Request); pw.WriteRequestMessageHeader(thisRequestId, id, facetPath, mcall.MethodName, Ice.OperationMode.Normal, ctx); // now write the args pw.BeginEncapsulation(); for (int i = 0; i < mcall.ArgCount; i++) { if (!paramInfos[i].IsOut) { if (Attribute.GetCustomAttribute(paramInfos[i], typeof(Ice.AsProxy)) != null) { pw.WriteProxy(mcall.Args[i], paramInfos[i].ParameterType); } else { pw.WriteObject(mcall.Args[i], paramInfos[i].ParameterType); } } } pw.WriteClassInstances(); pw.EndEncapsulation(); pw.EndMessage(); }
public virtual void WriteBatchRequestMessageEntry(Ice.Identity id, string[] facet, string operation, OperationMode omode, Ice.Context ctx) { if (_currentMessageType != MessageType.BatchRequest) { throw new InvalidOperationException("WriteRequestMessageHeader called with current message other than Request"); } WriteObject(id); WriteObject(facet); Write(operation); Write(Convert.ToByte(omode)); WriteObject(ctx); // params in an encapsulation need to follow this }
public void ice_unmarshal(Ice.ProtocolReader pr) { id.name = pr.ReadString(); id.category = pr.ReadString(); int facetlen = pr.ReadSize(); facet = new string[facetlen]; for (int i = 0; i < facetlen; i++) { facet[i] = pr.ReadString(); } operation = pr.ReadString(); mode = pr.ReadByte(); int count = pr.ReadSize(); context = new Ice.Context(); for (int i = 0; i < count; i++) { string k = pr.ReadString(); string v = pr.ReadString(); context.Add(k, v); } }
public void ice_unmarshal (Ice.ProtocolReader pr) { id.name = pr.ReadString (); id.category = pr.ReadString (); int facetlen = pr.ReadSize(); facet = new string[facetlen]; for (int i = 0; i < facetlen; i++) facet[i] = pr.ReadString(); operation = pr.ReadString(); mode = pr.ReadByte(); int count = pr.ReadSize(); context = new Ice.Context(); for (int i = 0; i < count; i++) { string k = pr.ReadString(); string v = pr.ReadString(); context.Add (k, v); } }