public Status ObserveOutputStream(string streamName, NativePacketCallback nativePacketCallback, bool observeTimestampBounds = false) { UnsafeNativeMethods.mp_CalculatorGraph__ObserveOutputStream__PKc_PF_b(mpPtr, streamName, nativePacketCallback, observeTimestampBounds, out var statusPtr).Assert(); GC.KeepAlive(this); return(new Status(statusPtr)); }
public Status ObserveOutputStream <T, U>(string streamName, PacketCallback <T, U> packetCallback, bool observeTimestampBounds, out GCHandle callbackHandle) where T : Packet <U> { NativePacketCallback nativePacketCallback = (IntPtr _graphPtr, IntPtr packetPtr) => { Status status = null; try { T packet = (T)Activator.CreateInstance(typeof(T), packetPtr, false); status = packetCallback(packet); } catch (Exception e) { status = Status.FailedPrecondition(e.ToString()); } return(status.mpPtr); }; callbackHandle = GCHandle.Alloc(nativePacketCallback, GCHandleType.Pinned); return(ObserveOutputStream(streamName, nativePacketCallback, observeTimestampBounds)); }
public Status ObserveOutputStream <T, U>(string streamName, PacketCallback <T, U> packetCallback, out GCHandle callbackHandle) where T : Packet <U> { NativePacketCallback nativePacketCallback = (IntPtr packetPtr) => { Status status = null; try { T packet = (T)Activator.CreateInstance(typeof(T), packetPtr, false); status = packetCallback(packet); } catch (Exception e) { status = Status.FailedPrecondition(e.ToString()); } return(status.mpPtr); }; callbackHandle = GCHandle.Alloc(nativePacketCallback, GCHandleType.Pinned); UnsafeNativeMethods.mp_CalculatorGraph__ObserveOutputStream__PKc_PF(mpPtr, streamName, nativePacketCallback, out var statusPtr).Assert(); GC.KeepAlive(this); return(new Status(statusPtr)); }
public Status ObserveOutputStream <TPacket, TValue>(string streamName, PacketCallback <TPacket, TValue> packetCallback, bool observeTimestampBounds, out GCHandle callbackHandle) where TPacket : Packet <TValue>, new() { NativePacketCallback nativePacketCallback = (IntPtr graphPtr, int streamId, IntPtr packetPtr) => { try { var packet = Packet <TValue> .Create <TPacket>(packetPtr, false); packetCallback(packet); return(Status.StatusArgs.Ok()); } catch (Exception e) { return(Status.StatusArgs.Internal(e.ToString())); } }; callbackHandle = GCHandle.Alloc(nativePacketCallback, GCHandleType.Pinned); return(ObserveOutputStream(streamName, 0, nativePacketCallback, observeTimestampBounds)); }