private void Subscribe(IActorRef subscriber, ClusterEvent.SubscriptionInitialStateMode initMode,
IEnumerable<Type> to)
{
if (initMode == ClusterEvent.SubscriptionInitialStateMode.InitialStateAsEvents)
{
Action<object> pub = @event =>
{
var eventType = @event.GetType();
//TODO: IsAssignableFrom same as in scala?
if (to.Any(o => o.IsAssignableFrom(eventType)))
subscriber.Tell(@event);
};
PublishDiff(Gossip.Empty, _latestGossip, pub);
}
else if(initMode == ClusterEvent.SubscriptionInitialStateMode.InitialStateAsSnapshot)
{
SendCurrentClusterState(subscriber);
}
foreach (var t in to) _eventStream.Subscribe(subscriber, t);
}