public override void HandleUnsubscriptionMessage(UnsubscribeMessage message) { this.PublishMessage(new ActorUnsubscribedMessage(message.Unsubscriber, false)); _unsubscribeMessages++; base.HandleUnsubscriptionMessage(message); }
/// <summary> /// Handles an <see cref="UnsubscribeMessage"/>. /// </summary> /// <param name="self">The <see cref="IPublishMessageActor"/></param> /// <param name="message">The <see cref="UnsubscribeMessage"/></param> /// <returns>True if <see cref="IActorRef"/> is removed from subscribers.</returns> internal static bool HandleUnsubscription(this IPublishMessageActor self, UnsubscribeMessage message) { self.HandleUnsubscriptionMessage(message); if (message.UnsubscribeAllTypes) { return(RemoveFromSubscribers(self, message.Unsubscriber)); } var result = self.Subscribers.Remove( self.Subscribers.FirstOrDefault( x => Equals(x.Item1, message.Unsubscriber) && x.Item2 == message.MessageType)); if (result && self.AutoWatchSubscriber) { self.ActorContext.Unwatch(message.Unsubscriber); } return(result); }
/// <summary> /// Handles unsubscribtions. /// </summary> /// <param name="message">The message.</param> public virtual void HandleUnsubscriptionMessage(UnsubscribeMessage message) { }
/// <summary> /// Handles unsubscribtions. /// </summary> /// <param name="message">The message.</param> public virtual void Handle(UnsubscribeMessage message) { this.HandleUnsubscription(message); }