예제 #1
0
        /// <remarks/>
        public System.IAsyncResult BegindoDeviceSubscriptionConfiguration(DeviceSubscriptionConfiguration DeviceSubscriptionConfiguration, System.AsyncCallback callback, object asyncState)
        {
            doDeviceSubscriptionConfigurationRequest inValue = new doDeviceSubscriptionConfigurationRequest();

            inValue.DeviceSubscriptionConfiguration = DeviceSubscriptionConfiguration;
            return(((SNSR_STDSOAPPort)(this)).BegindoDeviceSubscriptionConfiguration(inValue, callback, asyncState));
        }
예제 #2
0
        private void HandleSubscriptionRequest(DeviceSubscriptionConfiguration subscription)
        {
            string name = subscription.RequestorIdentification;

            // if message is invalid - throw
            if (!ValidateMessages || subscription.IsValid(out var ex))
            {
                // notify message
                MessageReceived?.BeginInvoke(subscription, name, null, null);

                // if client is registered
                if (!ValidateClients || _marsClients.ContainsKey(name))
                {
                    // if subscription has any values
                    if (subscription.SubscriptionType != null && subscription.SubscriptionType.Length > 0)
                    {
                        _marsClients[name].LastConnectionTime = DateTime.Now;
                        _marsClients[name].SubscriptionTypes  = subscription.SubscriptionType;
                        SendFullDeviceStatusReport(name);
                    }
                    else
                    {
                        // unsubscribe
                        _marsClients.Remove(name);
                    }
                }
            }
            else
            {
                ValidationErrorOccured?.BeginInvoke(this, new InvalidMessageException(subscription, ex), null, null);
            }
        }
예제 #3
0
        private Task HandleSubscriptionRequest(DeviceSubscriptionConfiguration subscription)
        {
            string name = subscription.RequestorIdentification;

            // if message is invalid - throw
            if (!ValidateMessages || subscription.IsValid(out var ex))
            {
                // notify message
                MessageReceived?.Invoke(subscription, name);

                // if client is registered
                if (!ValidateClients || _marsClients.ContainsKey(name))
                {
                    // if subscription has any values
                    if (subscription.SubscriptionType != null && subscription.SubscriptionType.Length > 0)
                    {
                        _marsClients[name].LastConnectionTime = DateTime.Now;
                        _marsClients[name].SubscriptionTypes  = subscription.SubscriptionType;
                        return(SendFullDeviceStatusReport(name));
                    }

                    // unsubscribe
                    _marsClients[name].SocketSession.CloseAsync();
                    _marsClients.Remove(name);
                }
                return(Task.CompletedTask);
            }

            ValidationErrorOccured?.Invoke(this, new InvalidMessageException(subscription, ex));
            return(Task.CompletedTask);
        }
예제 #4
0
        /// <remarks/>
        public void doDeviceSubscriptionConfiguration(ref DeviceSubscriptionConfiguration DeviceSubscriptionConfiguration)
        {
            doDeviceSubscriptionConfigurationRequest inValue = new doDeviceSubscriptionConfigurationRequest();

            inValue.DeviceSubscriptionConfiguration = DeviceSubscriptionConfiguration;
            doDeviceSubscriptionConfigurationResponse retVal = ((SNSR_STDSOAPPort)(this)).doDeviceSubscriptionConfiguration(inValue);

            DeviceSubscriptionConfiguration = retVal.DeviceSubscriptionConfiguration;
        }
예제 #5
0
        internal void HandleSubscriptionRequest(DeviceSubscriptionConfiguration request)
        {
            if (request == null)
            {
                return;
            }

            // get requestor name
            string name = request.RequestorIdentification;

            SubscriptionTypeType[] subscribeTypes = request.SubscriptionType;

            // add mars name to subscribed list
            if (_marsClients.ContainsKey(name))
            {
                // update connection watch to this mars
                _marsClients[name].LastConnectionTime = DateTime.Now;

                // if unsubscribe request
                if (subscribeTypes == null || subscribeTypes.Length == 0)
                {
                    lock (_syncToken)
                    {
                        _marsClients.Remove(name);
                    }
                }
                else
                {
                    _marsClients[name].SubscriptionTypes = subscribeTypes;
                }

                // raise the event
                MessageReceived?.BeginInvoke(request, name, null, null);

                // send full status report for the first time
                SendFullDeviceStatusReport(name);
            }
            else
            {
                Console.WriteLine($"Unknown Mars name ({name})");
            }
        }
예제 #6
0
 public doDeviceSubscriptionConfigurationResponse(DeviceSubscriptionConfiguration DeviceSubscriptionConfiguration)
 {
     this.DeviceSubscriptionConfiguration = DeviceSubscriptionConfiguration;
 }
예제 #7
0
 public doDeviceSubscriptionConfigurationRequest(DeviceSubscriptionConfiguration DeviceSubscriptionConfiguration)
 {
     this.DeviceSubscriptionConfiguration = DeviceSubscriptionConfiguration;
 }