public static NngResult <IRepReqAsyncContext <T> > Create(IMessageFactory <T> factory, IRepSocket socket) { var context = new RepAsyncCtx <T> { Factory = factory, socket = socket }; var res = context.InitAio(); if (res.IsOk()) { //TODO: when get default interface methods in C#8 move this to ICtx var ctx = NngCtx.Create(socket); if (ctx.IsOk()) { context.Ctx = ctx.Ok(); // Start receive loop context.AioCallback(IntPtr.Zero); return(NngResult <IRepReqAsyncContext <T> > .Ok(context)); } return(NngResult <IRepReqAsyncContext <T> > .Err(ctx.Err())); } else { return(NngResult <IRepReqAsyncContext <T> > .Fail(res.Err())); } }
public static NngResult <IRepReqAsyncContext <T> > CreateAsyncContext <T>(this IRepSocket socket, IAPIFactory <T> factory) => factory.CreateRepReqAsyncContext(socket);
public NngResult <IRepReqAsyncContext <INngMsg> > CreateRepReqAsyncContext(IRepSocket socket) { return(RepAsyncCtx <INngMsg> .Create(this, socket)); }