Exemplo n.º 1
0
        private void OnCancelConnectCallback(SingleSubscriberPublisher publisher)
        {
            int  subscriberCount  = 0;
            bool subscriberExists = cancelSubscriberCount.TryGetValue(publisher.SubscriberName, out subscriberCount);

            cancelSubscriberCount[publisher.SubscriberName] = (subscriberExists ? subscriberCount : 0) + 1;
        }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        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");
        }
Exemplo n.º 5
0
 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");
     }
 }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
 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());
 }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 9
0
        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;
            }
        }
Exemplo n.º 10
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());
            }
        }
Exemplo n.º 11
0
 public virtual CallResult call()
 {
     ROS.Debug("CALLED PEERCONNDISCONNCALLBACK");
     SingleSubscriberPublisher pub = new SingleSubscriberPublisher(sub_link);
     callback(pub);
     return CallResult.Success;
 }