protected void InvokeSink(UPnPAction sender, UPnPArgument[] InArgs, out object RetVal, out UPnPArgument[] OutArgs)
        {
            UPnPService S = (UPnPService)ServiceTable[sender.ParentService];
            UPnPAction  A = S.GetAction(sender.Name);

            ArrayList TempList = new ArrayList();

            foreach (UPnPArgument arg in A.Arguments)
            {
                if ((arg.IsReturnValue == false) && (arg.Direction == "out"))
                {
                    TempList.Add(arg.Clone());
                }
            }

            foreach (UPnPArgument arg in InArgs)
            {
                TempList.Add(arg);
            }

            lock (CallQueue)
            {
                ++InvokeID;
                CallQueue.Enqueue(InvokeID);
                S.InvokeAsync(sender.Name, (UPnPArgument[])TempList.ToArray(typeof(UPnPArgument)),
                              InvokeID,
                              new UPnPService.UPnPServiceInvokeHandler(RealInvokeSink),
                              null);
                InvokeTable[InvokeID] = sender.ParentService;
            }

            UPnPArgument[] OtherArgs;
            sender.ParentService.DelayInvokeRespose(InvokeID, out OtherArgs);
            throw(new DelayedResponseException());
        }
Beispiel #2
0
        public override bool Equals(object obj)
        {
            UPnPAction action = (UPnPAction)obj;

            if ((this.ParentService != null) && (action.ParentService != null))
            {
                return((this.ParentService.ServiceURN == action.ParentService.ServiceURN) && (action.Name == this.Name));
            }
            return(base.Equals(obj));
        }
Beispiel #3
0
        public object Clone()
        {
            UPnPAction action = (UPnPAction)base.MemberwiseClone();

            action.ArgList = new ArrayList();
            foreach (UPnPArgument argument in this.ArgList)
            {
                action.ArgList.Add(argument.Clone());
            }
            return(action);
        }
Beispiel #4
0
 public UPnPArgument(string name, object val)
 {
     this.__StateVariable = null;
     this.StateVarName    = null;
     this.parentAction    = null;
     this.Name            = name;
     this.DataValue       = val;
     if (val != null)
     {
         this.DataType = val.GetType().ToString();
     }
     else
     {
         this.DataType = "System.Void";
     }
     this.IsReturnValue = false;
 }
Beispiel #5
0
 internal UPnPArgument()
 {
     this.__StateVariable = null;
     this.StateVarName    = null;
     this.parentAction    = null;
 }