public Task <DeleteResult> DeleteStreamAsync(string stream, int expectedVersion) { var correlationId = Guid.NewGuid(); var dto = new ClientMessageDto.DeleteStream(correlationId, stream, expectedVersion); var package = new TcpPackage(TcpCommand.DeleteStream, correlationId, dto.Serialize()); var taskCompletionSource = new TaskCompletionSource <DeleteResult>(); var taskWrapper = new DeleteTaskCompletionWrapper(taskCompletionSource); RegisterHandler(correlationId, taskWrapper); EnqueueForSend(package); return(taskCompletionSource.Task); }
private static TcpPackage WrapDeleteStream(ClientMessage.DeleteStream msg) { var dto = new ClientMessageDto.DeleteStream(msg.CorrelationId, msg.EventStreamId, msg.ExpectedVersion); return(new TcpPackage(TcpCommand.DeleteStream, msg.CorrelationId, dto.Serialize())); }
public bool Execute(CommandProcessorContext context, string[] args) { var eventStreamId = "test-stream"; var expectedVersion = ExpectedVersion.Any; if (args.Length > 0) { if (args.Length > 2) { return(false); } eventStreamId = args[0]; if (args.Length == 2) { expectedVersion = args[1].Trim().ToUpper() == "ANY" ? ExpectedVersion.Any : int.Parse(args[1]); } } context.IsAsync(); var deleteDto = new ClientMessageDto.DeleteStream(Guid.NewGuid(), eventStreamId, expectedVersion); var package = new TcpPackage(TcpCommand.DeleteStream, deleteDto.Serialize()); var sw = new Stopwatch(); var done = false; context.Client.CreateTcpConnection( context, connectionEstablished: conn => { context.Log.Info("[{0}]: Trying to delete event stream '{1}'...", conn.EffectiveEndPoint, eventStreamId); sw.Start(); conn.EnqueueSend(package.AsByteArray()); }, handlePackage: (conn, pkg) => { sw.Stop(); if (pkg.Command != TcpCommand.DeleteStreamCompleted) { context.Fail(reason: string.Format("Unexpected TCP package: {0}.", pkg.Command)); return; } var dto = pkg.Data.Deserialize <ClientMessageDto.DeleteStreamCompleted>(); if (dto.ErrorCode == (int)OperationErrorCode.Success) { context.Log.Info("DELETED event stream {0}.", eventStreamId); } else { context.Log.Info("DELETION FAILED for event stream {0}: {1} ({2}).", eventStreamId, dto.Error, (OperationErrorCode)dto.ErrorCode); } context.Log.Info("Delete request took: {0}.", sw.Elapsed); PerfUtils.LogTeamCityGraphData(string.Format("{0}-latency-ms", Keyword), (int)sw.ElapsedMilliseconds); done = true; conn.Close(); context.Success(); }, connectionClosed: (connection, error) => { if (done && error == SocketError.Success) { context.Success(); } else { context.Fail(); } }); context.WaitForCompletion(); return(true); }
public override TcpPackage CreateNetworkPackage(Guid correlationId) { var dto = new ClientMessageDto.DeleteStream(correlationId, EventStreamId, ExpectedVersion); return(new TcpPackage(TcpCommand.DeleteStream, correlationId, dto.Serialize())); }