public PublisherChannelBuilder(
     IPublisherRegistry publisherRegistry, 
     ISerialiser serialiser, 
     ITaskRepeater taskRepeater,
     MessageCacheFactory messageCacheFactory, 
     ISubscriberSendChannelBuilder subscriberChannelBuilder, 
     ISystemTime systemTime, 
     ChangeStore changeStore,
     ICheckpointStrategy checkPointStrategy)
 {
     Contract.Requires(publisherRegistry != null);
     Contract.Requires(serialiser != null);
     Contract.Requires(taskRepeater != null);
     Contract.Requires(messageCacheFactory != null);
     Contract.Requires(subscriberChannelBuilder != null);
     Contract.Requires(systemTime != null);
     Contract.Requires(changeStore != null);
     Contract.Requires(checkPointStrategy != null);
     
     this.publisherRegistry = publisherRegistry;
     this.serialiser = serialiser;
     this.taskRepeater = taskRepeater;
     this.messageCacheFactory = messageCacheFactory;
     this.subscriberChannelBuilder = subscriberChannelBuilder;
     this.systemTime = systemTime;
     this.changeStore = changeStore;
     this.checkPointStrategy = checkPointStrategy;
 }
        public Subscriber(ISubscriberSendChannelBuilder builder)
        {
            Contract.Requires(builder != null);

            this.builder = builder;
            locker = new object();
        }
        public Publisher(
            EndpointAddress address, 
            ISubscriberSendChannelBuilder builder, 
            ChangeStore changeStore,
            ICheckpointStrategy checkPointStrategy)
        {
            Contract.Requires(address != null);
            Contract.Requires(address != EndpointAddress.Empty);
            Contract.Requires(builder != null);
            Contract.Requires(changeStore != null);

            subscribers = new PersistentSubscriberCollection(address, changeStore, builder, checkPointStrategy);
        }