Example #1
0
 public UserGetStateResponse(IActorRef originalRequestor, UserState userState, UserGetStateRequest originalRequest) : base(originalRequestor, userState, originalRequest)
 {
 }
Example #2
0
        /// <summary>
        /// This method sets the actor so that it can "boot" itself up.
        /// </summary>
        private void Initializing()
        {
            _logger.Debug("Initializing.");


            //
            // Handle Responses
            //


            // Handle case when we get a list of actor ref's from the supervisor
            Receive <UserGetChildActorRefsResponse>(r => {
                _logger.Debug("Received child actor references.");

                // Go get the child actor states
                foreach (IActorRef childActorRef in r.ListOfChildActorRefs)
                {
                    _logger.Debug($"Requesting child state from:{childActorRef.Path.Name}");
                    UserGetStateRequest newRequest = new UserGetStateRequest(Self);
                    childActorRef.Tell(newRequest);
                    _PendingRequests.Add(newRequest);
                }
            });

            // Save the User state
            Receive <UserGetStateResponse>(r => {
                _logger.Debug($"Received child actor state from:{Sender.Path.Name}");

                if (r.ReplyUserState != null)
                {
                    _ActorState.Add(r.ReplyUserState.Id, r.ReplyUserState);
                }
                _PendingRequests.Remove(r.OriginalRequest as UserGetStateRequest);

                if (_PendingRequests.Count == 0)
                {
                    _logger.Info("Received all User actor states.");
                    Become(Ready);
                }
            });

            // Reply to self with a null User state
            Receive <UserGetStateRequest>(r => { Sender.Tell(new UserGetStateResponse(r.Requestor, null, r)); });

            Receive <SubscribedForCommandEvents>(r => {
                _logger.Info($"Subscribed for '{r.Id}' command events");
            });


            // This catch all will log if there are any weird unhandled messages.
            Receive <object>(message =>
            {
                Stash.Stash();
                _logger.Debug($"Stashing unhandled message from:{Sender.Path.ToStringWithAddress()} Got Unhandled Message:{message.GetType().Name}");
            });

            //
            // Requests
            //

            //Request from parent the list of child actor IActorRefs to request the state from them
            Context.Parent.Tell(new UserGetChildActorRefs(Self, null));

            _logger.Debug("Initialized.");
        }