internal NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER CreateNativeHeaderBytes(byte[] bytes) { if (bytes == null) { var emptyNativebuffer = new NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER(); emptyNativebuffer.BufferSize = 0; emptyNativebuffer.Buffer = IntPtr.Zero; return(emptyNativebuffer); } var nativeObj = new NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER(); nativeObj.BufferSize = (uint)bytes.Length; nativeObj.Buffer = this.pin.AddBlittable(bytes); return(nativeObj); }
internal IntPtr CreateNativeBodyBytesPtr() { if (this.message.GetBody() == null || !this.message.GetBody().GetBodyBuffers().Any()) { var messageBuffer = new NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER(); messageBuffer.BufferSize = 0; messageBuffer.Buffer = IntPtr.Zero; this.length = 0; return(this.pin.AddBlittable(messageBuffer)); } else { var nativeBuffer = this.CreateNativeBodyBytes(); return(this.pin.AddBlittable(nativeBuffer)); } }
internal NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER[] CreateNativeBodyBytes() { var bodyBuffer = this.message.GetBody().GetBodyBuffers(); this.length = bodyBuffer.Count(); var bufferarray = new NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER[this.length]; int i = 0; foreach (var item in bodyBuffer) { bufferarray[i].BufferSize = (uint)item.Count; var bufferAddress = this.pin.AddBlittable(item.Array); bufferarray[i].Buffer = IntPtr.Add(bufferAddress, sizeof(byte) * item.Offset); i++; } return(bufferarray); }
internal NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER CreateNativeHeaderBytes() { if (this.message.GetHeader() == null || this.message.GetHeader().GetSendBuffer() == null) { var emptyNativebuffer = new NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER(); emptyNativebuffer.BufferSize = 0; emptyNativebuffer.Buffer = IntPtr.Zero; return(emptyNativebuffer); } var nativeObj = new NativeFabricTransport.FABRIC_TRANSPORT_MESSAGE_BUFFER(); var headers = this.message.GetHeader().GetSendBuffer(); nativeObj.BufferSize = (uint)headers.Count; var bufferAddress = this.pin.AddBlittable(headers.Array); nativeObj.Buffer = IntPtr.Add(bufferAddress, sizeof(byte) * headers.Offset); return(nativeObj); }