protected override bool Business(object message)
{
Subscribe subscribe;
Unsubscribe unsubscribe;
if ((subscribe = message as Subscribe) != null && subscribe.Group != null)
{
var encodedGroup = Encode(subscribe.Group);
var child = encodedGroup == null ? ActorRefs.Nobody : Context.Child(encodedGroup);
if (!ActorRefs.Nobody.Equals(child))
{
child.Forward(message);
}
else
{
var group = Context.ActorOf(Props.Create(() => new Group(EmptyTimeToLive, _routingLogic)), encodedGroup);
group.Forward(message);
Context.Watch(group);
Context.Parent.Tell(new RegisterTopic(group));
}
PruneDeadline = null;
}
else if ((unsubscribe = message as Unsubscribe) != null && unsubscribe.Group != null)
{
var encodedGroup = Encode(unsubscribe.Group);
var child = encodedGroup == null ? ActorRefs.Nobody : Context.Child(encodedGroup);
if (!child.Equals(ActorRefs.Nobody))
{
child.Forward(message);
}
}
else if (message is Subscribed)
{
Context.Parent.Forward(message);
}
else if (message is Unsubscribed)
{
Context.Parent.Forward(message);
}
else return false;
return true;
}