public override void pushitgood(ISubscriptionCallbackHelper helper, IRosMessage message, bool nonconst_need_copy, ref bool was_full, TimeData receipt_time) { if (was_full) { was_full = false; } if (fullNoLock()) { Item toss; queue.TryDequeue(out toss); _full = true; was_full = true; } else { _full = false; } Item i = new Item { helper = helper, message = message, nonconst_need_copy = nonconst_need_copy, receipt_time = receipt_time }; queue.Enqueue(i); }
/// <summary> /// Creates a ROS Subscriber /// </summary> /// <param name="topic">Topic name to subscribe to</param> /// <param name="nodeHandle">nodehandle</param> /// <param name="cb">callback function to be fired when message is received</param> public Subscriber(string topic, NodeHandle nodeHandle, ISubscriptionCallbackHelper cb) : base(topic) { // TODO: Complete member initialization this.topic = topic; nodehandle = new NodeHandle(nodeHandle); helper = cb; }
public IMessageDeserializer MakeDeserializer(MsgTypes type, ISubscriptionCallbackHelper helper, IRosMessage m, IDictionary connection_header) { if (type == MsgTypes.Unknown) { return(null); } //return ROS.MakeDeserializer(ROS.MakeMessage(type)); return ((IMessageDeserializer) Activator.CreateInstance( typeof(MessageDeserializer <>).MakeGenericType( ROS.MakeMessage(type).GetType()), helper, m, connection_header)); }
public void removeCallback(ISubscriptionCallbackHelper helper) { lock (callbacks_mutex) { foreach (ICallbackInfo info in callbacks) { if (info.helper == helper) { info.subscription_queue.clear(); info.callback.removeByID(info.Get()); callbacks.Remove(info); //if (!helper.isConst()) --nonconst_callbacks; break; } } } }
public bool unsubscribe(string topic, ISubscriptionCallbackHelper sbch) { Subscription sub = null; lock (subs_mutex) { if (shutting_down) { return(false); } foreach (Subscription s in subscriptions) { if (s.name == topic) { sub = s; break; } } } if (sub == null) { return(false); } sub.removeCallback(sbch); if (sub.NumCallbacks == 0) { lock (subs_mutex) { subscriptions.Remove(sub); if (!unregisterSubscriber(topic)) { EDB.WriteLine("Couldn't unregister subscriber for topic [" + topic + "]"); } } sub.shutdown(); return(true); } return(true); }
public override void pushitgood(ISubscriptionCallbackHelper helper, IMessageDeserializer deserializer, bool nonconst_need_copy, ref bool was_full, TimeData receipt_time) { lock (queue_mutex) { if (was_full) { was_full = false; } if (fullNoLock()) { queue.Dequeue(); --queue_size; _full = true; if (was_full) { was_full = true; } } else { _full = false; } Item i = new Item { helper = helper, deserializer = deserializer, nonconst_need_copy = nonconst_need_copy, receipt_time = receipt_time }; queue.Enqueue(i); ++queue_size; } }
public IMessageDeserializer(ISubscriptionCallbackHelper helper, IRosMessage m, IDictionary connection_header) { this.helper = helper; message = m; this.connection_header = connection_header; }
public virtual void pushitgood(ISubscriptionCallbackHelper helper, IRosMessage msg, bool nonconst_need_copy, ref bool was_full, TimeData receipt_time) { throw new NotImplementedException(); }