public void Invoke(Envelope envelope) { var message = envelope.Message; var influenceReceiveTimeout = !(message is INotInfluenceReceiveTimeout); try { // Akka JVM doesn't have these lines CurrentMessage = envelope.Message; _currentEnvelopeId++; Sender = MatchSender(envelope); if (influenceReceiveTimeout) { CancelReceiveTimeout(); } if (message is IAutoReceivedMessage) { AutoReceiveMessage(envelope); } else { ReceiveMessage(message); } CurrentMessage = null; } catch (Exception cause) { HandleInvokeFailure(cause); } finally { if (influenceReceiveTimeout) { CheckReceiveTimeout(); // Reschedule receive timeout } } }
/// <summary> /// Dispatches a user-defined message from a mailbox to an <see cref="ActorCell"/> /// </summary> public virtual void Dispatch(ActorCell cell, Envelope envelope) { cell.Invoke(envelope); }