private void GetStateTableSink(System.String DeviceUDN, System.String ServiceID, out System.Byte[] Variables) { foreach (UPnPDevice d in ShareList) { UPnPDevice _D = d.GetDevice(DeviceUDN); if (_D != null) { UPnPService s = _D.GetService(ServiceID); if (s != null) { ArrayList t = new ArrayList(); foreach (UPnPStateVariable V in s.GetStateVariables()) { if (V.SendEvent) { t.Add(new UPnPArgument(V.Name, UPnPService.SerializeObjectInstance(V.Value))); } } Variables = Gatekeeper.BuildArguments((UPnPArgument[])t.ToArray(typeof(UPnPArgument))); return; } } } throw(new UPnPCustomException(800, "No Match")); }
private void InvokeSink(UPnPAction sender, UPnPArgument[] _Args, out object RetVal, out UPnPArgument[] _OutArgs) { string DeviceUDN = (string)ReverseUDNTable[sender.ParentService.ParentDevice.UniqueDeviceName]; string ServiceID = sender.ParentService.ServiceID; byte[] InArgs = Gatekeeper.BuildArguments(_Args); //byte[] OutArgs; ++ActionCounter; if (this.OnAction != null) { OnAction(this, ActionCounter); } int Handle = Creator.GetNewHandle(); Creator.InvokeLaterTable[Handle] = ILCB; PendingActionTable[Handle] = sender; CP.InvokeAsync(DV, DeviceUDN, ServiceID, sender.Name, InArgs, Handle); UPnPArgument[] Args; sender.ParentService.DelayInvokeRespose(0, out Args); throw (new DelayedResponseException()); /* * CP.Sync_Invoke(DeviceUDN,ServiceID,sender.Name, * InArgs, out OutArgs); * * UPnPArgument[] Outputs = Gatekeeper.ParseArguments(OutArgs); * ArrayList alist = new ArrayList(); * RetVal = null; * * * foreach(UPnPArgument A in Outputs) * { * if(A.IsReturnValue) * { * RetVal = A.DataValue; * } * else * { * alist.Add(A); * } * } * * _OutArgs = (UPnPArgument[])alist.ToArray(typeof(UPnPArgument)); */ }