예제 #1
0
        Task OnClientAcceptedAsync(IMqttChannelAdapter channelAdapter)
        {
            var clientHandler = ClientHandler;

            if (clientHandler == null)
            {
                return(TaskExtension.FromResult(0));
            }

            return(clientHandler(channelAdapter));
        }
        public MqttClientDisconnectedHandlerDelegate(Action <MqttClientDisconnectedEventArgs> handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }

            _handler = context =>
            {
                handler(context);
                return(TaskExtension.FromResult(0));
            };
        }
        public MqttServerClientUnsubscribedTopicHandlerDelegate(Action <MqttServerClientUnsubscribedTopicEventArgs> handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }

            _handler = eventArgs =>
            {
                handler(eventArgs);
                return(TaskExtension.FromResult(0));
            };
        }
예제 #4
0
        public MqttServerStartedHandlerDelegate(Action <EventArgs> handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }

            _handler = eventArgs =>
            {
                handler(eventArgs);
                return(TaskExtension.FromResult(0));
            };
        }
        public MqttApplicationMessageReceivedHandlerDelegate(Action <MqttApplicationMessageReceivedEventArgs> handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }

            _handler = context =>
            {
                handler(context);
                return(TaskExtension.FromResult(0));
            };
        }
        public MqttServerConnectionValidatorDelegate(Action <MqttConnectionValidatorContext> callback)
        {
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }

            _callback = context =>
            {
                callback(context);
                return(TaskExtension.FromResult(0));
            };
        }
예제 #7
0
        public MqttServerApplicationMessageInterceptorDelegate(Action <MqttApplicationMessageInterceptorContext> callback)
        {
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }

            _callback = context =>
            {
                callback(context);
                return(TaskExtension.FromResult(0));
            };
        }
예제 #8
0
        public Task <IList <IMqttSessionStatus> > GetSessionStatusAsync()
        {
            var result = new List <IMqttSessionStatus>();

            foreach (var session in _sessions.Values)
            {
                var sessionStatus = new MqttSessionStatus(session, this);
                session.FillStatus(sessionStatus);

                result.Add(sessionStatus);
            }

            return(TaskExtension.FromResult((IList <IMqttSessionStatus>)result));
        }
예제 #9
0
        /// <summary>
        /// Обработка события выбора нового сценария из списка ранее открытых
        /// </summary>
        /// <param name="newScenario">Выбираемый сценарий</param>
        /// <returns>Возвращает значение, которое определяет можно ли продолжать открытие выбираемого сценария</returns>
        private async Task <bool> NewScenatioItemOnSelecting(ScenarioItem newScenario)
        {
            string key = newScenario.ScenarioInfo.Key;

            if (key.Equals(mFileName))
            {
                Scenarios.Where(s => !s.ScenarioInfo.Key.Equals(key)).ToList().ForEach(s => s.UnselecteItem());
                return(await TaskExtension.FromResult(true));
            }
            if (await CheckLoadParameter(this, key, true))
            {
                Scenarios.ToList().ForEach(s => s.UnselecteItem());
                return(await TaskExtension.FromResult(true));
            }
            return(await TaskExtension.FromResult(false));
        }
예제 #10
0
        public Task <IDisposable> WaitAsync(CancellationToken cancellationToken)
        {
#if NET40
            _semaphore.Wait();
            return(TaskExtension.FromResult(_releaser.Result));
#else
            var task = _semaphore.WaitAsync(cancellationToken);
            if (task.Status == TaskStatus.RanToCompletion)
            {
                return(_releaser);
            }

            return(task.ContinueWith(
                       (_, state) => (IDisposable)state,
                       _releaser.Result,
                       cancellationToken, TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default));
#endif
        }
예제 #11
0
        public Task <IList <IMqttClientStatus> > GetClientStatusAsync()
        {
            var result = new List <IMqttClientStatus>();

            foreach (var connection in _connections.Values)
            {
                var clientStatus = new MqttClientStatus(connection);
                connection.FillStatus(clientStatus);

                var sessionStatus = new MqttSessionStatus(connection.Session, this);
                connection.Session.FillStatus(sessionStatus);
                clientStatus.Session = sessionStatus;

                result.Add(clientStatus);
            }

            return(TaskExtension.FromResult((IList <IMqttClientStatus>)result));
        }
예제 #12
0
        /// <summary>
        /// Проверка параметров загрузки сценария
        /// </summary>
        /// <param name="param"></param>
        /// <param name="fileName"></param>
        /// <param name="loadingMode"></param>
        /// <returns></returns>
        private async Task <bool> CheckLoadParameter(object param, string fileName, bool loadingMode)
        {
            bool result = false;

            if (IndicatorLoad.IsEqual(Indicators.Warn.GetColor()))
            {
                if (MessageBox.Show(Constants.cInsureChangeScenarioText, Constants.cAttention, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    await ChangeScenarioAsync(fileName, loadingMode).ConfigureAwait(false);

                    result = true;
                }
            }
            else if (IndicatorLoad.IsEqual(Indicators.Accept.GetColor()))
            {
                await ChangeScenarioAsync(fileName, loadingMode).ConfigureAwait(false);

                result = true;
            }
            await TaskExtension.Delay(1);

            CommandManager.InvalidateRequerySuggested();
            return(await TaskExtension.FromResult(result));
        }
예제 #13
0
 public Task ClearPendingApplicationMessagesAsync()
 {
     _session.ApplicationMessagesQueue.Clear();
     return(TaskExtension.FromResult(0));
 }
예제 #14
0
 public Task DisconnectAsync(CancellationToken cancellationToken)
 {
     Dispose();
     return(TaskExtension.FromResult(0));
 }
예제 #15
0
 public AsyncLock()
 {
     _releaser = TaskExtension.FromResult((IDisposable) new Releaser(this));
 }
예제 #16
0
 public Task ConnectAsync(CancellationToken cancellationToken)
 {
     return(TaskExtension.FromResult(0));
 }