private void OnCancelConnectCallback(SingleSubscriberPublisher publisher) { int subscriberCount = 0; bool subscriberExists = cancelSubscriberCount.TryGetValue(publisher.SubscriberName, out subscriberCount); cancelSubscriberCount[publisher.SubscriberName] = (subscriberExists ? subscriberCount : 0) + 1; }
private void OnGoalDisconnectCallback(SingleSubscriberPublisher publisher) { int subscriberCount = 0; bool keyExists = goalSubscriberCount.TryGetValue(publisher.SubscriberName, out subscriberCount); if (!keyExists) { // This should never happen. Warning has been copied from official actionlib implementation ROS.Warn()( $"goalDisconnectCallback: Trying to remove {publisher.SubscriberName} from " + "goalSubscribers, but it is not in the goalSubscribers list." ); } else { ROS.Debug()( $"goalDisconnectCallback: Removing {publisher.SubscriberName} from goalSubscribers, " + $"(remaining with same name: {subscriberCount - 1})" ); if (subscriberCount <= 1) { goalSubscriberCount.Remove(publisher.SubscriberName); } else { goalSubscriberCount[publisher.SubscriberName] = subscriberCount - 1; } } }
private void OnGoalConnectCallback(SingleSubscriberPublisher publisher) { int subscriberCount = 0; bool keyExists = goalSubscriberCount.TryGetValue(publisher.SubscriberName, out subscriberCount); goalSubscriberCount[publisher.SubscriberName] = (keyExists ? subscriberCount : 0) + 1; ROS.Debug()($"goalConnectCallback: Adding {publisher.SubscriberName} to goalSubscribers"); }
private void OnCancelConnectCallback(SingleSubscriberPublisher publisher) { int subscriberCount = 0; bool subscriberExists = cancelSubscriberCount.TryGetValue(publisher.SubscriberName, out subscriberCount); cancelSubscriberCount[publisher.SubscriberName] = (subscriberExists ? subscriberCount : 0) + 1; ROS.Debug()($"[{ThisNode.Name}] cancelConnectCallback: Adding {publisher.SubscriberName} to cancelSubscribers"); }
private void OnCancelConnectCallback(SingleSubscriberPublisher publisher) { lock (gate) { bool subscriberExists = cancelSubscriberCount.TryGetValue(publisher.SubscriberName, out int subscriberCount); cancelSubscriberCount[publisher.SubscriberName] = (subscriberExists ? subscriberCount : 0) + 1; ROS.Debug()($"cancelConnectCallback: Adding {publisher.SubscriberName} to cancelSubscriberCount"); } }
public void cancelConnectCallback(SingleSubscriberPublisher pub) { lock ( lockObject ) { if (cancelSubscribers.ContainsKey(pub.subscriber_name)) { ROS.Warn("cancelConnectCallback: Trying to add [%s] to cancelSubscribers, but it is already in the cancelSubscribers list", pub.subscriber_name); cancelSubscribers [pub.subscriber_name]++; } else { ROS.Debug("cancelConnectCallback: Adding [%s] to cancelSubscribers", pub.subscriber_name); cancelSubscribers [pub.subscriber_name] = 1; } ROS.Debug("%s", cancelSubscribersString()); } // check_connection_condition_.notify_all(); }
public void cancelDisconnectCallback(SingleSubscriberPublisher pub) { lock ( lockObject ) { if (cancelSubscribers.ContainsKey(pub.subscriber_name)) { ROS.Debug("cancelDisconnectCallback: Removing [%s] from cancelSubscribers", pub.subscriber_name); cancelSubscribers [pub.subscriber_name]--; if (cancelSubscribers[pub.subscriber_name] == 0) { cancelSubscribers.Remove(pub.subscriber_name); } } else { ROS.Warn("cancelDisconnectCallback: Trying to remove [%s] to cancelSubscribers, but it is not in the cancelSubscribers list", pub.subscriber_name); } } ROS.Debug("%s", cancelSubscribersString()); }
public void goalConnectCallback(SingleSubscriberPublisher pub) { lock ( lockObject ) { // check if the dictionary contains this publisher if (goalSubscribers.ContainsKey(pub.subscriber_name)) { ROS.Warn("goalConnectCallback: Trying to add [%s] to goalSubscribers, but it is already in the goalSubscribers list", pub.subscriber_name); goalSubscribers [pub.subscriber_name]++; } else { ROS.Debug("goalConnectCallback: Adding [%s] to goalSubscribers", pub.subscriber_name); goalSubscribers.Add(pub.subscriber_name, 1); } } ROS.Debug("%s", goalSubscribersString()); // notify all threads waiting on this condition. Monitor.Pulse? might not need all this // check_connection_condition_.notify_all(); }
private void OnGoalConnectCallback(SingleSubscriberPublisher publisher) { List <ClientGoalHandle <TGoal, TResult, TFeedback> > unacknowledgedGoalHandles; lock (gate) { bool keyExists = goalSubscriberCount.TryGetValue(publisher.SubscriberName, out int subscriberCount); goalSubscriberCount[publisher.SubscriberName] = (keyExists ? subscriberCount : 0) + 1; ROS.Debug()($"goalConnectCallback: Adding {publisher.SubscriberName} to goalSubscribers"); // check if we have unacknowledged goals (the action server might have missed the goal message when it was disconnected) unacknowledgedGoalHandles = goalHandles.Values .Where(x => x.State == CommunicationState.WAITING_FOR_GOAL_ACK) .ToList(); } foreach (var gh in unacknowledgedGoalHandles) { ROS.Debug()("Republishing unacknowledged goal: {0}", gh.Id); GoalPublisher.Publish(gh.Goal); gh.statusMissing = 0; } }
public void goalDisconnectCallback(SingleSubscriberPublisher pub) { lock ( lockObject ) { if (goalSubscribers.ContainsKey(pub.subscriber_name)) { ROS.Debug("goalDisconnectCallback: Removing [%s] from goalSubscribers", pub.subscriber_name); goalSubscribers [pub.subscriber_name]--; if (goalSubscribers [pub.subscriber_name] == 0) { goalSubscribers.Remove(pub.subscriber_name); } Dictionary <string, int> .Enumerator en = goalSubscribers.GetEnumerator(); } else { ROS.Warn("goalDisconnectCallback: Trying to remove [%s] to goalSubscribers, but it is not in the goalSubscribers list", pub.subscriber_name); } ROS.Debug("%s", goalSubscribersString()); } }
public virtual CallResult call() { ROS.Debug("CALLED PEERCONNDISCONNCALLBACK"); SingleSubscriberPublisher pub = new SingleSubscriberPublisher(sub_link); callback(pub); return CallResult.Success; }