public AzureEventStoreClient(AzureStoreConfiguration config, EventStoreId storeId, string serverEndpoint = null) : base(storeId, serverEndpoint) { Config = config; _blob = config.GetPageBlob(storeId.Name + "/stream.dat"); _blob.Container.CreateIfNotExist(); }
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 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 static CloudPageBlob GetPageBlob(this AzureStoreConfiguration config, string blobAddress) { var account = CloudStorageAccount.Parse(config.ConnectionString); var client = account.CreateCloudBlobClient(); var path = config.RootBlobContainerName + "/" + blobAddress.TrimStart('/'); return(client.GetPageBlobReference(path)); }
public static AzureEventStore OpenExistingForReading(AzureStoreConfiguration config, EventStoreId container) { var blob = config.GetPageBlob(container.Name + "/stream.dat"); var check = AzureEventPointer.OpenReadable(blob); blob.FetchAttributes(); var store = AzureEventStoreChunk.OpenExistingForReading(blob, blob.Properties.Length); return new AzureEventStore(container, store, check); }
public bool Execute(CommandProcessorContext context, CancellationToken token, string[] args) { // [abdullin]: we don't need checkpoint write flood (multi-threads) // since there is only one writer by default int repeat = 10000; if (args.Length > 0) { int.TryParse(args[0], out repeat); } const string checkpointName = "epfl.chk"; AzureStoreConfiguration configuration; var location = context.Client.Options.StoreLocation; if (AzureStoreConfiguration.TryParse(location, out configuration)) { var container = CloudStorageAccount.Parse(configuration.ConnectionString) .CreateCloudBlobClient() .GetContainerReference(configuration.RootBlobContainerName); container.CreateIfNotExist(); var blob = container.GetPageBlobReference(checkpointName); blob.Create(512); try { using (var pointer = new TestAzurePointer(blob)) { TestPointer(context, pointer, repeat, "page"); } using (var pointer = AzureEventPointer.OpenWriteable(blob)) { TestPointer(context, pointer, repeat, "meta"); } } finally { blob.DeleteIfExists(); } } else { var fullName = Path.Combine(location, checkpointName); try { using (var openOrCreateForWriting = FileEventPointer.OpenOrCreateForWriting(fullName)) { TestPointer(context, openOrCreateForWriting, repeat, "file"); } } finally { File.Delete(fullName); } } return(true); }
public static AzureEventStore OpenExistingForWriting(AzureStoreConfiguration config, EventStoreId container) { var blob = config.GetPageBlob(container.Name + "/stream.dat"); var check = AzureEventPointer.OpenWriteable(blob); var offset = check.Read(); var length = blob.Properties.Length; var store = AzureEventStoreChunk.OpenExistingForWriting(blob, offset, length); return new AzureEventStore(container, store, check); }
public static AzureEventStore OpenExistingForWriting(AzureStoreConfiguration config, EventStoreId container) { var blob = config.GetPageBlob(container.Name + "/stream.dat"); var check = AzureEventPointer.OpenWriteable(blob); var offset = check.Read(); var length = blob.Properties.Length; var store = AzureEventStoreChunk.OpenExistingForWriting(blob, offset, length); return(new AzureEventStore(container, store, check)); }
public static AzureEventStore CreateNewForWriting(AzureStoreConfiguration config, EventStoreId container) { var blob = config.GetPageBlob(container.Name + "/stream.dat"); blob.Container.CreateIfNotExist(); var store = AzureEventStoreChunk.CreateNewForWriting(blob); var check = AzureEventPointer.OpenWriteable(blob); return new AzureEventStore(container, store, check); }
public static AzureEventStore OpenExistingForReading(AzureStoreConfiguration config, EventStoreId container) { var blob = config.GetPageBlob(container.Name + "/stream.dat"); var check = AzureEventPointer.OpenReadable(blob); blob.FetchAttributes(); var store = AzureEventStoreChunk.OpenExistingForReading(blob, blob.Properties.Length); return(new AzureEventStore(container, store, check)); }
public static NodeEntryPoint StartWithOptions(NodeOptions options, Action <int> termination) { var slim = new ManualResetEventSlim(false); var list = String.Join(Environment.NewLine, options.GetPairs().Select(p => String.Format("{0} : {1}", p.Key, p.Value))); Log.Info(list); var bus = new InMemoryBus("OutputBus"); var controller = new NodeController(bus); var mainQueue = new QueuedHandler(controller, "Main Queue"); controller.SetMainQueue(mainQueue); Application.Start(i => { slim.Set(); termination(i); }); var http = new PlatformServerApiService(mainQueue, String.Format("http://{0}:{1}/", options.LocalHttpIp, options.HttpPort)); bus.Subscribe <SystemMessage.Init>(http); bus.Subscribe <SystemMessage.StartShutdown>(http); var timer = new TimerService(new ThreadBasedScheduler(new RealTimeProvider())); bus.Subscribe <TimerMessage.Schedule>(timer); // switch, based on configuration AzureStoreConfiguration azureConfig; if (AzureStoreConfiguration.TryParse(options.StoreLocation, out azureConfig)) { var storageService = new AzureStorageService(azureConfig, mainQueue); bus.Subscribe <ClientMessage.AppendEvents>(storageService); bus.Subscribe <SystemMessage.Init>(storageService); bus.Subscribe <ClientMessage.ImportEvents>(storageService); bus.Subscribe <ClientMessage.RequestStoreReset>(storageService); } else { var storageService = new FileStorageService(options.StoreLocation, mainQueue); bus.Subscribe <ClientMessage.AppendEvents>(storageService); bus.Subscribe <SystemMessage.Init>(storageService); bus.Subscribe <ClientMessage.ImportEvents>(storageService); bus.Subscribe <ClientMessage.RequestStoreReset>(storageService); } mainQueue.Start(); mainQueue.Enqueue(new SystemMessage.Init()); return(new NodeEntryPoint(mainQueue, slim)); }
public static AzureEventStore CreateNewForWriting(AzureStoreConfiguration config, EventStoreId container) { var blob = config.GetPageBlob(container.Name + "/stream.dat"); blob.Container.CreateIfNotExist(); var store = AzureEventStoreChunk.CreateNewForWriting(blob); var check = AzureEventPointer.OpenWriteable(blob); return(new AzureEventStore(container, store, check)); }
public static bool TryGetContainerName( AzureStoreConfiguration config, CloudBlobDirectory dir, out EventStoreId container) { var topic = dir.Uri.ToString().Remove(0, dir.Container.Uri.ToString().Length).Trim('/'); container = null; if (EventStoreId.IsValid(topic)!= EventStoreId.Rule.Valid) return false; container = EventStoreId.Parse(topic); return IsValid(config, container); }
public static bool TryGetContainerName ( AzureStoreConfiguration config, CloudBlobDirectory dir, out EventStoreId container) { var topic = dir.Uri.ToString().Remove(0, dir.Container.Uri.ToString().Length).Trim('/'); container = null; if (EventStoreId.IsValid(topic) != EventStoreId.Rule.Valid) { return(false); } container = EventStoreId.Parse(topic); return(IsValid(config, container)); }
public static bool IsValid(AzureStoreConfiguration config, EventStoreId container) { var store = config.GetPageBlob(container.Name + "/stream.dat"); return Exists(store); }
public static bool IsValid(AzureStoreConfiguration config, EventStoreId container) { var store = config.GetPageBlob(container.Name + "/stream.dat"); return(Exists(store)); }
public AzureStorageService(AzureStoreConfiguration config, IPublisher publisher) { _publisher = publisher; _config = config; }