예제 #1
0
 public bool TryReceivePacket(out T packet)
 {
     using (var m = new WrappedService_typed_packet())
     {
         if (_subscription.TryReceivePacket(m))
         {
             using (var m1 = m.packet)
             {
                 packet = RobotRaconteurNode.s.UnpackAnyType <T>(m1);
                 return(true);
             }
         }
         else
         {
             packet = default(T);
             return(false);
         }
     }
 }
예제 #2
0
 public bool TryReceivePacketWait(out T packet, int timeout = RobotRaconteurNode.RR_TIMEOUT_INFINITE,
                                  bool peek = false)
 {
     using (var m = new WrappedService_typed_packet())
     {
         if (_subscription.TryReceivePacketWait(m, timeout, peek))
         {
             using (var m1 = m.packet)
             {
                 packet = RobotRaconteurNode.s.UnpackAnyType <T>(m1);
                 return(true);
             }
         }
         else
         {
             packet = default(T);
             return(false);
         }
     }
 }
예제 #3
0
        public bool TryGetInValue(out T value)
        {
            var m = new WrappedService_typed_packet();

            using (m)
            {
                if (_subscription.TryGetInValue(m))
                {
                    var m1 = m.packet;
                    using (m1)
                    {
                        value = RobotRaconteurNode.s.UnpackAnyType <T>(m1);
                    }
                    return(true);
                }
                else
                {
                    value = default(T);
                    return(false);
                }
            }
        }
예제 #4
0
        public bool TryGetInValue(out T value, out TimeSpec time)
        {
            var m = new WrappedService_typed_packet();
            var t = new TimeSpec();

            using (m)
            {
                if (_subscription.TryGetInValue(m, t))
                {
                    time = t;
                    using (var m1 = m.packet)
                    {
                        value = RobotRaconteurNode.s.UnpackAnyType <T>(m1);
                        return(true);
                    }
                }
                else
                {
                    time  = null;
                    value = default(T);
                    return(false);
                }
            }
        }
예제 #5
0
            public override void WireValueChanged(WrappedWireSubscription subscription, WrappedService_typed_packet value,
                                                  TimeSpec time)
            {
                using (value)
                {
                    var s = (WireSubscription <T>)subscription1.Target;
                    if (s == null)
                    {
                        return;
                    }
                    if (s.WireValueChanged == null)
                    {
                        return;
                    }
                    try
                    {
                        using (var m1 = value.packet)
                        {
                            var v = RobotRaconteurNode.s.UnpackAnyType <T>(m1);

                            s.WireValueChanged(s, v, time);
                        }
                    }
                    catch
                    {}
                }
            }