public Task <IActorResponse> Call(long actorId, IActorRequest message) { if (actorId == 0) { throw new Exception($"actor id is 0: {DCETRuntime.MongoHelper.ToJson(message)}"); } string address = StartConfigComponent.Instance.GetProcessInnerAddress(IdGenerater.GetProcessId(actorId)); Session session = NetInnerComponent.Instance.Get(address); message.ActorId = actorId & IdGenerater.HeadMask | IdGenerater.Head; message.RpcId = ++RpcId; var tcs = new TaskCompletionSource <IActorResponse>(); requestCallback.Add(message.RpcId, new ActorMessageSender((response) => { if (ErrorCode.IsRpcNeedThrowException(response.Error)) { tcs.SetException(new Exception($"Rpc error: {DCETRuntime.MongoHelper.ToJson(response)}")); return; } tcs.SetResult(response); })); session.Send(message); return(tcs.Task); }
public void Send(long actorId, IActorMessage message) { if (actorId == 0) { throw new Exception($"actor id is 0: {DCETRuntime.MongoHelper.ToJson(message)}"); } string address = StartConfigComponent.Instance.GetProcessInnerAddress(IdGenerater.GetProcessId(actorId)); Session session = NetInnerComponent.Instance.Get(address); message.ActorId = actorId; session.Send(message); }