Exemplo n.º 1
0
        public object Call(string method, object[] args, int timeout)
        {
            XmlHttpRequest xhr = XmlHttpRequestManager.GetXmlHttpRequest();
            Lock l = new Lock();
            l.Acquire();
            TimedCondition condition = new TimedCondition(l);
            OnReadyStateChangeHandler handler = new OnReadyStateChangeHandler(xhr, condition);
            xhr.OnReadyStateChange = (NativeFunction)new VoidDelegate(handler.OnReadyStateChange);
            xhr.Open("POST", ServerUrl, true, Username, Password);
            xhr.SetRequestHeader(RpcMethodRequestHeader, method);
            xhr.Send(Serialize(args));
            if (timeout > 0)
            {
                try
                {
                    // wait for timeout milliseconds
                    condition.Await(timeout);
                }
                catch (ConditionTimedOutException)
                {
                    Logging.Debug("Request timed out!!!");
                    throw new JsonRpcCallTimedOutException(this, method, args, timeout);
                }
            }
            else
            {
                // wait indefinitely
                condition.Await();
            }

            // we have a response from the server, or we couldn't connect
            Logging.Debug("Status code is: " + xhr.Status);
            if (xhr.Status == 200)
            {
                Logging.Debug("Got 200! Response text is " + xhr.ResponseText);
                return Deserialize(xhr.ResponseText);
            }
            else if (xhr.Status == 0)
            {
                Logging.Debug("Request timed out!!!");
                throw new JsonRpcCallTimedOutException(this, method, args, 1000); // TODO: Extract into constant of 1000 ms.  Also this should be some sort of connection refused exception instead
            }
            else
            {
                throw GenerateException(xhr.Status, method, args, xhr.ResponseText);
            }
        }
        public InterfaceEventsSink(

            OnEmergencyModeChangeHandler onEmergencyModeChangeCallback,
            OnHomeProviderAvailableHandler onHomeProviderAvailableCallback,
            OnInterfaceCapabilityAvailableHandler onInterfaceCapabilityAvailableCallback,
            OnPreferredProvidersChangeHandler onPreferredProvidersChangeCallback,
            OnReadyStateChangeHandler onReadyStateChangeCallback,
            OnScanNetworkCompleteHandler onScanNetworkCompleteCallback,
            OnSetPreferredProvidersCompleteHandler onSetPreferredProvidersCompleteCallback,
            OnSubscriberInformationChangeHandler onSubscriberInformationChangeCallback,
            IConnectionPoint connectionPoint)
        {
            m_OnEmergencyModeChangeCallback           = new WeakReference <OnEmergencyModeChangeHandler>(onEmergencyModeChangeCallback);
            m_OnHomeProviderAvailableCallback         = new WeakReference <OnHomeProviderAvailableHandler>(onHomeProviderAvailableCallback);
            m_OnInterfaceCapabilityAvailableCallback  = new WeakReference <OnInterfaceCapabilityAvailableHandler>(onInterfaceCapabilityAvailableCallback);
            m_OnPreferredProvidersChangeCallback      = new WeakReference <OnPreferredProvidersChangeHandler>(onPreferredProvidersChangeCallback);
            m_OnReadyStateChangeCallback              = new WeakReference <OnReadyStateChangeHandler>(onReadyStateChangeCallback);
            m_OnScanNetworkCompleteCallback           = new WeakReference <OnScanNetworkCompleteHandler>(onScanNetworkCompleteCallback);
            m_OnSetPreferredProvidersCompleteCallback = new WeakReference <OnSetPreferredProvidersCompleteHandler>(onSetPreferredProvidersCompleteCallback);
            m_OnSubscriberInformationChangeCallback   = new WeakReference <OnSubscriberInformationChangeHandler>(onSubscriberInformationChangeCallback);

            m_ConnectionPoint = connectionPoint;
            m_ConnectionPoint.Advise(this, out m_AdviseCookie);
        }
Exemplo n.º 3
0
        private void InitializeEventHandlers()
        {
            try
            {
                // Get the interface
                m_MbnInterface             = m_MbnInterfaceManager.GetInterface(selectedInterfaceId);
                m_MbnConnection            = m_MbnInterface.GetConnection();
                m_MbnDeviceServicesContext = m_MbnDeviceServicesManager.GetDeviceServicesContext(m_MbnInterface.InterfaceID);

                // Register for IMbnConnectionEvents
                if (m_ConnectionEventsSink == null)
                {
                    m_OnConnectCompleteEventDelegate    = new OnConnectCompleteHandler(ProcessOnConnectComplete);
                    m_OnDisconnectCompleteEventDelegate = new OnDisconnectCompleteHandler(ProcessOnDisconnectComplete);
                    m_ConnectionEventsSink = new ConnectionEventsSink(m_OnConnectCompleteEventDelegate,
                                                                      m_OnDisconnectCompleteEventDelegate,
                                                                      GetMbnConnectionEventsConnectionPoint());
                }

                // Register for IMbnDeviceServicesEvents
                if (m_DeviceServicesEventsSink == null)
                {
                    m_OnOpenCommandSessionCompleteEventDelegate = new OnOpenCommandSessionCompleteHandler(ProcessOnOpenCommandSessionComplete);
                    m_OnQueryCommandCompleteEventDelegate       = new OnQueryCommandCompleteHandler(ProcessOnQueryCommandComplete);
                    m_OnSetCommandCompleteEventDelegate         = new OnSetCommandCompleteHandler(ProcessOnSetCommandComplete);
                    m_OnCloseCommandSessionEventDelegate        = new OnCloseCommandSessionCompleteHandler(ProcessOnCloseCommandSessionComplete);
                    m_DeviceServicesEventsSink = new DeviceServicesEventsSink(
                        m_OnOpenCommandSessionCompleteEventDelegate,
                        m_OnQueryCommandCompleteEventDelegate,
                        m_OnCloseCommandSessionEventDelegate,
                        m_OnSetCommandCompleteEventDelegate,
                        GetMbnDeviceServicesEventsConnectionPoint());
                }

                //Register for IMbnRegistrationEvents
                if (m_RegistrationEventsSink == null)
                {
                    m_OnRegisterModeAvailableHandlerEventDelegate    = new OnRegisterModeAvailableHandler(ProcessOnRegisterModeAvailable);
                    m_OnRegisterStateChangeHandlerEventDelegate      = new OnRegisterStateChangeHandler(ProcessOnRegisterStateChange);
                    m_OnPacketServiceStateChangeHandlerEventDelegate = new OnPacketServiceStateChangeHandler(ProcessOnPacketServiceStateChange);
                    m_OnSetRegisterModeCompleteHandlerEventDelegate  = new OnSetRegisterModeCompleteHandler(ProcessOnSetRegisterModeComplete);
                    m_RegistrationEventsSink = new RegistrationEventsSink(
                        m_OnRegisterModeAvailableHandlerEventDelegate,
                        m_OnRegisterStateChangeHandlerEventDelegate,
                        m_OnPacketServiceStateChangeHandlerEventDelegate,
                        m_OnSetRegisterModeCompleteHandlerEventDelegate,
                        GetRegisterEventsConnectionPoint());
                }

                if (m_InterfaceEventsSink == null)
                {
                    OnEmergencyModeChangeHandlerEventDelegate           = new OnEmergencyModeChangeHandler(ProcessOnEmergencyModeChange);
                    OnHomeProviderAvailableHandlerEventDelegate         = new OnHomeProviderAvailableHandler(ProcessOnHomeProviderAvailable);
                    OnInterfaceCapabilityAvailableHandlerEventDelegate  = new OnInterfaceCapabilityAvailableHandler(ProcessOnInterfaceCapabilityAvailable);
                    OnPreferredProvidersChangeHandlerEventDelegate      = new OnPreferredProvidersChangeHandler(ProcessOnPreferredProvidersChange);
                    OnReadyStateChangeHandlerEventDelegate              = new OnReadyStateChangeHandler(ProcessOnReadyStateChange);
                    OnScanNetworkCompleteHandlerEventDelegate           = new OnScanNetworkCompleteHandler(ProcessOnScanNetworkComplete);
                    OnSetPreferredProvidersCompleteHandlerEventDelegate = new OnSetPreferredProvidersCompleteHandler(ProcessOnSetPreferredProvidersComplete);
                    OnSubscriberInformationChangeHandlerEventDelegate   = new OnSubscriberInformationChangeHandler(ProcessOnSubscriberInformationChange);
                    m_InterfaceEventsSink = new InterfaceEventsSink(
                        OnEmergencyModeChangeHandlerEventDelegate,
                        OnHomeProviderAvailableHandlerEventDelegate,
                        OnInterfaceCapabilityAvailableHandlerEventDelegate,
                        OnPreferredProvidersChangeHandlerEventDelegate,
                        OnReadyStateChangeHandlerEventDelegate,
                        OnScanNetworkCompleteHandlerEventDelegate,
                        OnSetPreferredProvidersCompleteHandlerEventDelegate,
                        OnSubscriberInformationChangeHandlerEventDelegate,
                        GetInterfaceEventsConnectionPoint());
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(ParseExceptionCode(e));
            }
        }