Inheritance: IDisposable
        public AzureEventStoreManager(AzureStoreConfiguration config)
        {
            _config = config;

            var account = CloudStorageAccount.Parse(config.ConnectionString);
            var client  = account.CreateCloudBlobClient();

            var rootAzureContainer = client.GetContainerReference(config.RootBlobContainerName);

            rootAzureContainer.CreateIfNotExist();

            foreach (var blob in rootAzureContainer.ListBlobs())
            {
                var dir = blob as CloudBlobDirectory;

                if (dir == null)
                {
                    continue;
                }

                EventStoreId container;

                if (AzureEventStore.TryGetContainerName(_config, dir, out container))
                {
                    var value = AzureEventStore.OpenExistingForWriting(config, container);
                    _stores.Add(container.Name, value);
                }
                else
                {
                    Log.Info("Skipping invalid folder {0}", rootAzureContainer.Uri.MakeRelativeUri(dir.Uri));
                }
            }
        }
        public void AppendEventsToStore(EventStoreId storeId, string streamId, IEnumerable <byte[]> eventData)
        {
            AzureEventStore store;

            if (!_stores.TryGetValue(storeId.Name, out store))
            {
                store = AzureEventStore.CreateNewForWriting(_config, storeId);
                _stores.Add(storeId.Name, store);
            }
            store.Write(streamId, eventData);
        }