Akka.Actor.ActorCell.Post C# (CSharp) Method

Post() public method

public Post ( IActorRef sender, object message ) : void
sender IActorRef
message object
return void
        public virtual void Post(IActorRef sender, object message)
        {
            if (Mailbox == null)
            {
                return;
                //stackoverflow if this is the deadletters actorref
                //this._systemImpl.DeadLetters.Tell(new DeadLetter(message, sender, this.Self));
            }

            if (_systemImpl.Settings.SerializeAllMessages)
            {
                DeadLetter deadLetter;
                var unwrapped = (deadLetter = message as DeadLetter) != null ? deadLetter.Message : message;
                if (!(unwrapped is INoSerializationVerificationNeeded))
                {
                    Serializer serializer = _systemImpl.Serialization.FindSerializerFor(message);
                    byte[] serialized = serializer.ToBinary(message);
                    object deserialized = _systemImpl.Serialization.Deserialize(serialized, serializer.Identifier,
                        message.GetType());
                    message = deserialized;
                }
            }

            var m = new Envelope
            {
                Sender = sender,
                Message = message,
            };

            Mailbox.Post(Self, m);
        }

Usage Example

示例#1
0
 protected override void TellInternal(object message, ActorRef sender)
 {
     _cell.Post(sender, message);
 }