internal EmbeddedEventStorePersistentSubscription(
     string subscriptionId, string streamId,
     Action<EventStorePersistentSubscriptionBase, ResolvedEvent> eventAppeared,
     Action<EventStorePersistentSubscriptionBase, SubscriptionDropReason, Exception> subscriptionDropped,
     UserCredentials userCredentials, ILogger log, bool verboseLogging, ConnectionSettings settings,
     EmbeddedSubscriber subscriptions,
     int bufferSize = 10, bool autoAck = true)
     : base(
         subscriptionId, streamId, eventAppeared, subscriptionDropped, userCredentials, log, verboseLogging,
         settings, bufferSize, autoAck)
 {
     _subscriptions = subscriptions;
 }
        public EventStoreEmbeddedNodeConnection(ConnectionSettings settings, string connectionName, IPublisher publisher, ISubscriber bus)
        {
            Ensure.NotNull(publisher, "publisher");
            Ensure.NotNull(settings, "settings");

            _settings = settings;
            _connectionName = connectionName;
            _publisher = publisher;
            _subscriptionBus = new InMemoryBus("Embedded Client Subscriptions");
            _connectionId = Guid.NewGuid();

            _subscriptions = new EmbeddedSubscriber(_settings.Log, _connectionId);
            
            _subscriptionBus.Subscribe<ClientMessage.SubscriptionConfirmation>(_subscriptions);
            _subscriptionBus.Subscribe<ClientMessage.SubscriptionDropped>(_subscriptions);
            _subscriptionBus.Subscribe<ClientMessage.StreamEventAppeared>(_subscriptions);
            _subscriptionBus.Subscribe(new AdHocHandler<ClientMessage.SubscribeToStream>(_publisher.Publish));
            _subscriptionBus.Subscribe(new AdHocHandler<ClientMessage.UnsubscribeFromStream>(_publisher.Publish));

            bus.Subscribe(new AdHocHandler<SystemMessage.BecomeShutdown>(_ => Disconnected(this, new ClientConnectionEventArgs(this, new IPEndPoint(IPAddress.None, 0)))));
        }