private void CreateCallDataBufferLayout() { int num1 = XDRPCExecutionState.ArgumentSize * (8 + this.totalArgumentCount + this.FloatingPointArguments.Length); int num2 = 2; this.bufferData = new XDRPCExecutionState.ArgumentBufferData[this.IntegerArguments.Length + num2]; this.referenceData = new XDRPCExecutionState.ArgumentBufferData[this.IntegerArguments.Length]; int currOffset = num1; for (int index = 0; index < this.IntegerArguments.Length + num2; ++index) { XDRPCExecutionState.ArgumentBufferData argumentBufferData = new XDRPCExecutionState.ArgumentBufferData(); argumentBufferData.BufferOffset = currOffset; argumentBufferData.BufferSize = index >= num2 ? this.IntegerArguments[index - num2].GetRequiredBufferSize() : this.Options.GetRequiredBufferSize(index); currOffset += argumentBufferData.BufferSize; XDRPCExecutionState.AlignBufferOffset(ref currOffset); this.bufferData[index] = argumentBufferData; } for (int index = 0; index < this.IntegerArguments.Length; ++index) { XDRPCExecutionState.ArgumentBufferData argumentBufferData = new XDRPCExecutionState.ArgumentBufferData(); argumentBufferData.BufferOffset = currOffset; argumentBufferData.BufferSize = this.IntegerArguments[index].GetRequiredReferenceSize(); currOffset += argumentBufferData.BufferSize; XDRPCExecutionState.AlignBufferOffset(ref currOffset); this.referenceData[index] = argumentBufferData; } this.totalBufferSize = currOffset; }
private XDRPCArrayArgumentInfo <T> .ArrayElementData GenerateArrayBufferData( XDRPCArgumentInfo info, ref int referenceOffset) { XDRPCArrayArgumentInfo <T> .ArrayElementData arrayElementData = new XDRPCArrayArgumentInfo <T> .ArrayElementData(); arrayElementData.Info = info; arrayElementData.ReferenceOffset = referenceOffset; arrayElementData.ReferenceSize = info.GetRequiredReferenceSize(); referenceOffset += arrayElementData.ReferenceSize; XDRPCExecutionState.AlignBufferOffset(ref referenceOffset); return(arrayElementData); }