private void RunDispatcher() { TasksManager.Add((CancellationToken c) => { OpenVPNDispatcher dispatcher = new OpenVPNDispatcher(this, m_cancellationToken); dispatcher.Run(); }); }
public void ShouldCreateNewTask() { var task = _tasksManager.Add(42); Assert.NotNull(task); Assert.Equal(TaskStatus.WaitingForActivation, task.Status); }
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); }
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()); }
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); } }