internal object[] DeserialiseRequestArgs(CdrInputStream sourceStream, out IDictionary contextElements, Serializer contextElementSer) { object[] result = new object[m_arguments.Length]; for (int actualParamNr = 0; actualParamNr < m_arguments.Length; actualParamNr++) { ArgumentMapping paramInfo = m_arguments[actualParamNr]; if (paramInfo.IsInArg() || paramInfo.IsRefArg()) { result[actualParamNr] = paramInfo.Deserialize(sourceStream); } // else: null for an out parameter } contextElements = DeserializeContextElements(sourceStream, contextElementSer); return(result); }
internal void SerializeRequestArgs(object[] arguments, CdrOutputStream targetStream, LogicalCallContext context, Serializer contextElementSer) { for (int actualParamNr = 0; actualParamNr < arguments.Length; actualParamNr++) { ArgumentMapping paramInfo = m_arguments[actualParamNr]; // iterate through the parameters, nonOut and nonRetval params are serialised for a request if (paramInfo.IsInArg() || paramInfo.IsRefArg()) { paramInfo.Serialize(targetStream, arguments[actualParamNr]); } // move to next parameter // out-args are also part of the arguments array -> move to next for those whithout doing something } SerializeContextElements(targetStream, context, contextElementSer); }