public Invoke ( Envelope envelope ) : void | ||
envelope | Envelope | The envelope. |
return | void |
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); }