Beispiel #1
0
 private void RunDispatcher()
 {
     TasksManager.Add((CancellationToken c) =>
     {
         OpenVPNDispatcher dispatcher = new OpenVPNDispatcher(this, m_cancellationToken);
         dispatcher.Run();
     });
 }
Beispiel #2
0
        public void ShouldCreateNewTask()
        {
            var task = _tasksManager.Add(42);

            Assert.NotNull(task);
            Assert.Equal(TaskStatus.WaitingForActivation, task.Status);
        }
Beispiel #3
0
        public async Task <string> HandleMarketOrderAsync(string clientId, string assetId, OrderAction orderAction, double volume, bool straight)
        {
            var id = GetNextRequestId();

            var marketOrderModel = MeMarketOrderModel.Create(id, clientId, assetId, orderAction, volume, straight);
            var resultTask       = _tasksManager.Add(id);
            await _tcpOrderSocketService.SendDataToSocket(marketOrderModel);

            var result = await resultTask;

            return(result.RecordId);
        }
Beispiel #4
0
        public void HandleThreadStopped()
        {
            // OnThreadStopped MUST be called from a separated thread since the current one (the caller) could otherwise wait for himself to exit (because of DoStopVPN's call)

            m_tasksManager.Add((CancellationToken c) => OnThreadStopped());
        }
Beispiel #5
0
        private async Task <TResponse> SendData <TModel, TResult, TResponse>(
            TModel model,
            TasksManager <TResult> manager,
            Func <TResult, TResponse> convert,
            RetryPolicy <TResponse> retryPolicy,
            CancellationToken cancellationToken,
            string id,
            string telemetryData,
            [CallerMemberName] string callerName = "")
            where TResult : class
            where TResponse : class
        {
            var telemetryOperation = TelemetryHelper.InitTelemetryOperation(
                callerName,
                id,
                telemetryData);

            try
            {
                if (_enableRetries)
                {
                    var response = await retryPolicy.ExecuteAsync(async() =>
                    {
                        var resultTask = manager.Add(id, cancellationToken);

                        if (!await _tcpOrderSocketService.SendDataToSocket(model, cancellationToken))
                        {
                            manager.SetResult(id, null);
                            TelemetryHelper.SubmitOperationFail(telemetryOperation);
                            return(null);
                        }

                        var result = await resultTask;
                        return(convert(result));
                    });

                    return(response);
                }
                else
                {
                    var resultTask = manager.Add(id, cancellationToken);

                    if (!await _tcpOrderSocketService.SendDataToSocket(model, cancellationToken))
                    {
                        manager.SetResult(id, null);
                        TelemetryHelper.SubmitOperationFail(telemetryOperation);
                        return(null);
                    }

                    var result = await resultTask;
                    return(convert(result));
                }
            }
            catch (Exception ex)
            {
                TelemetryHelper.SubmitException(ex);
                TelemetryHelper.SubmitOperationFail(telemetryOperation);
                throw;
            }
            finally
            {
                TelemetryHelper.SubmitOperationResult(telemetryOperation);
            }
        }