private async Task HandleClientImageRequest(OperationHandlerContext ctx, CancellationToken cancellationToken) { var request = ((ImageTaskRequest)ctx.Message).Payload; var image = await Socket.ReceiveStreamAsync(cancellationToken); var task = _taskFactory.Create(image); void Callback(object sender, BaseTaskState arg) { if (!((BaseTask)sender).IsCompleted) { return; } var _ = SendTaskUpdateAsync(task, cancellationToken); } task.DetectionTask.OnStateChanged += Callback; task.OnStateChanged += Callback; var _ = _taskRunner.RunTaskAsync(task, cancellationToken); }
private async Task HandleClientHeartbeat(OperationHandlerContext ctx, CancellationToken cancellationToken) { await Socket.SendObjectAsync(new Heartbeat(SessionId), cancellationToken); }
private Task HandleClientHandshake(OperationHandlerContext ctx, CancellationToken cancellationToken) { return(Task.FromException(new WebSocketControllerException(4405, "Server-only Operations"))); }
private Task HandleCloseSession(OperationHandlerContext ctx, CancellationToken cancellationToken) { return(Task.FromException(new WebSocketControllerException(4200, "Closure Requested by Client"))); }