public static FabricTransportMessage ToFabricTransportMessage( NativeFabricTransport.IFabricTransportMessage message) { FabricTransportMessage msg; uint count; IntPtr headerBuffer; IntPtr messageBuffer; message.GetHeaderAndBodyBuffer(out headerBuffer, out count, out messageBuffer); if (headerBuffer != IntPtr.Zero) { msg = new FabricTransportMessage( NativeMessageToFabricTransportHeader(headerBuffer), NativeMessageToFabricTransportBody(count, messageBuffer), message); } else { msg = new FabricTransportMessage(null, NativeMessageToFabricTransportBody(count, messageBuffer), message); } GC.KeepAlive(message); return(msg); }
public NativeFabricTransportMessage(FabricTransportMessage message) { this.message = message; // Create pinned objects for header and body. this.pin = new PinCollection(); var nativeHeaderBuffer = this.CreateNativeHeaderBytes(); this.nativeHeadersPtr = this.pin.AddBlittable(nativeHeaderBuffer); this.nativeBodyBuffersPtr = this.CreateNativeBodyBytesPtr(); }