private async Task <List <DeliverResponse> > DeliverAsync(ADStreamingCall <Envelope, DeliverResponse> call, Envelope envelope, CancellationToken token) { List <DeliverResponse> ret = new List <DeliverResponse>(); var rtask = Task.Run(async() => { while (await call.Call.ResponseStream.MoveNext(token).ConfigureAwait(false)) { token.ThrowIfCancellationRequested(); DeliverResponse resp = call.Call.ResponseStream.Current; logger.Debug($"{this} resp status value: {resp.Status}, type case: {resp.TypeCase}"); if (resp.TypeCase == DeliverResponse.TypeOneofCase.Status) { ret.Insert(0, resp); //TODO: mpiva: Review this, original JAVA code will throw exception on no success, channel init code, check for the status (Not Found) for retrying. //TODO: mpiva: Report this as an error to the original JAVA SDK repo. // if (resp.Status == Status.Success) return; /*if (shutdown) * throw new OperationCanceledException($"Channel {channelName}, sendDeliver were canceled"); * throw new TransactionException($"Channel {channelName} orderer {name} status finished with failure code {resp.Status} during order registration"); */ } ret.Add(resp); } }, token); await call.Call.RequestStream.WriteAsync(envelope).ConfigureAwait(false); token.ThrowIfCancellationRequested(); await rtask.TimeoutAsync(TimeSpan.FromMilliseconds(ordererWaitTimeMilliSecs), token).ConfigureAwait(false); logger.Trace($"{this} Deliver Complete."); return(ret); }
public BlockInfo(DeliverResponse resp) { if (resp.TypeCase == DeliverResponse.TypeOneofCase.Block) { Block respBlock = resp.Block; filteredBlock = null; if (respBlock == null) { throw new ArgumentNullException("DeliverResponse type block but block is null"); } block = new BlockDeserializer(respBlock); } else if (resp.TypeCase == DeliverResponse.TypeOneofCase.FilteredBlock) { filteredBlock = resp.FilteredBlock; block = null; if (filteredBlock == null) { throw new ArgumentNullException("DeliverResponse type filter block but filter block is null"); } } else { throw new ArgumentException($"DeliverResponse type has unexpected type"); } }
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Hello World"); //XmlConfigurator.Configure(); if (context.Request.RequestType.Equals("POST", StringComparison.CurrentCultureIgnoreCase)) { DeliverResponse rsp; using (var s = new StreamReader(System.Web.Request.InputStream)) { var xml = s.ReadToEnd(); try { var request = (DeliverRequest) new SXMPParser().Parse(xml); var messageText = request.Text; var senderNumber = request.SourceAddress.Address; //Parsing successful, return response rsp = new DeliverResponse((int) SXMPErrorCode.OK, "OK"); } catch (SXMPParseException sx) { rsp = new DeliverResponse((int) SXMPErrorCode.INVALID_XML, sx.Message); Response.StatusCode = (int) HttpStatusCode.BadRequest; } } Response.ContentType = "text/xml"; Response.Output.WriteLine(SXMPWriter.Write(rsp)); } else { Response.StatusCode = (int) HttpStatusCode.MethodNotAllowed; Response.Output.WriteLine("Only HTTP POST Method allowed"); Response.Output.Flush(); } }
public BlockEvent(Peer peer, DeliverResponse resp) : base(resp) { EventHub = null; Peer = peer; evnt = null; }