Пример #1
0
        /// <summary>
        /// Executes a subscribe_var command.
        /// Requests the blackboard to send a notification to the subscriber module when a shared variable is written
        /// </summary>
        /// <param name="command">Command to execute</param>
        private void SubscribeVarCommand(Command command)
        {
            SharedVariableSubscription subscription;

            if (!SharedVariableSubscription.TryParse(command, out subscription))
            {
                SendResponse(command, false);
                return;
            }

            if (!sharedVariables.Contains(subscription.VariableName))
            {
                if (subscription.SubscriptionType == SharedVariableSubscriptionType.Creation)
                {
                    string varName = subscription.VariableName;
                    if (!pendingSubscriptions.ContainsKey(varName))
                    {
                        pendingSubscriptions.Add(varName, new List <SharedVariableSubscription>());
                    }
                    if (!pendingSubscriptions[varName].Contains(subscription))
                    {
                        pendingSubscriptions[varName].Add(subscription);
                    }
                    SendResponse(command, true);
                }
                else
                {
                    SendResponse(command, false);
                    return;
                }
            }
            else
            {
                sharedVariables[subscription.VariableName].Subscriptions.Add(subscription);
                SendResponse(command, true);
            }
        }
 public SubscriptionPropertyDescriptor(int index, SharedVariableSubscription subscription, Attribute[] attrs)
     : base(index.ToString(), attrs)
 {
     this.subscription = subscription;
 }
 public SubscriptionPropertyDescriptor(int index, SharedVariableSubscription subscription)
     : this(index, subscription, null)
 {
 }