public RemoteMessage(IMessage message, Aid to, WireMessageId messageId) { _to = to ?? Aid.Unknown; _message = message ?? Actors.Message.Empty; _messageId = messageId ?? WireMessageId.Next(); _isFuture = _message is IFutureMessage; }
public static WireMessage ToWireMessage(this Exception exception, Aid from, Aid to, WireMessageId id = null) { var faulted = (exception != null); var state = WireMessageState.Empty; state |= faulted ? WireMessageState.Faulted : WireMessageState.Canceled; return(new WireMessage { From = from, To = to, Exception = exception, MessageType = faulted ? MessageType.FutureError : MessageType.FutureResponse, Id = id ?? WireMessageId.Next(), State = state }); }
public static WireMessage ToWireMessage(this IMessage message, Aid to, WireMessageId id = null, Exception exception = null) { var result = new WireMessage { To = to, Id = id ?? WireMessageId.Next() }; if (message != null) { result.MessageType = message.MessageType; result.From = message.From; result.Data = message.Data; result.TimeoutMSec = message.TimeoutMSec; var msgHeader = message.Header; var headerCount = msgHeader?.Count ?? 0; if (headerCount > 0) { var header = new Dictionary <string, string>(headerCount); foreach (var kv in msgHeader) { header.Add(kv.Key, kv.Value); } result.Header = header; } var state = WireMessageState.Default; if (message.IsEmpty) { state |= WireMessageState.Empty; } if (message is IFutureMessage future) { if (future.IsCanceled) { state |= WireMessageState.Canceled; } if (future.IsCompleted) { state |= WireMessageState.Completed; } if (future.IsFaulted) { state |= WireMessageState.Faulted; } } if (exception != null) { result.Exception = exception; state |= WireMessageState.Faulted; } else if (message is IFutureError error) { result.Exception = error.Exception; state |= WireMessageState.Faulted; } result.State = state; } return(result); }
internal RemoteRequest(IFutureMessage message, Aid to, Action <object, TaskCompletionStatus> onTimeout) : base(message, to, WireMessageId.Next()) { _onTimeout += onTimeout; }