示例#1
0
 public AsyncRequestAgent(Func <IRequest <TRequest, TReply>, Task> handler, Action <Exception> callback)
 {
     Fiber    = new AsyncFiber(callback);
     _channel = Fiber.NewRequestPort(handler);
 }
示例#2
0
 public AsyncRequestAgent(IFiberFactory factory, Func <IRequest <TRequest, TReply>, Task> handler,
                          Action <Exception> callback)
 {
     Fiber    = factory.CreateAsyncFiber(callback);
     _channel = Fiber.NewRequestPort(handler);
 }
示例#3
0
 public RequestAgent(Action <IRequest <TRequest, TReply> > handler, Action <Exception> errorHandler = null)
 {
     Fiber    = errorHandler == null ? new Fiber() : new Fiber(errorHandler);
     _channel = Fiber.NewRequestPort(handler);
 }
示例#4
0
 public RequestAgent(IFiberFactory factory, Action <IRequest <TRequest, TReply> > handler,
                     Action <Exception> errorHandler = null)
 {
     Fiber    = factory.CreateFiber(errorHandler);
     _channel = Fiber.NewRequestPort(handler);
 }
示例#5
0
 public RequestAgent(Action <IRequest <TRequest, TReply> > handler, FiberType type = FiberType.Pool)
 {
     Fiber    = Fibrous.Fiber.StartNew(type);
     _channel = Fiber.NewRequestPort(handler);
 }
示例#6
0
 public Calculator()
 {
     _fiber   = new Fiber(OnError);
     Messages = _fiber.NewChannel <Message>(OnMessage);
     Requests = _fiber.NewRequestPort <object, double>(OnRequest);
 }
示例#7
0
 protected UntypedActor(IFiberFactory factory = null)
 {
     Fiber        = factory?.CreateFiber(OnError) ?? new Fiber(OnError);
     _tellChannel = Fiber.NewChannel <object>(Receive);
     _askChannel  = Fiber.NewRequestPort <object, object>(OnRequest);
 }
示例#8
0
 protected RequestAgentBase(FiberType type = FiberType.Pool)
 {
     _fiber   = Fiber.StartNew(type);
     _channel = _fiber.NewRequestPort <TRequest, TReply>(Handle);
 }
示例#9
0
 /// <summary>
 /// Send a request with infinite timeout
 /// </summary>
 /// <typeparam name="TRequest"></typeparam>
 /// <typeparam name="TReply"></typeparam>
 /// <param name="port"></param>
 /// <param name="request"></param>
 /// <returns></returns>
 public static TReply SendRequest <TRequest, TReply>(this IRequestPort <TRequest, TReply> port, TRequest request)
 {
     return(port.SendRequest(request).Receive(TimeSpan.MaxValue).Value);
 }