コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }