MessageFetcher GetFetcher(string stream) { MessageFetcher fetcher; CloudStorageAccount account; if (CloudStorageAccount.TryParse(SourceFolder, out account)) { var containerReference = account.CreateCloudBlobClient().GetContainerReference(stream); if (!containerReference.Exists()) { Console.WriteLine("Container doesn't exist {0}", stream); Environment.Exit(1); } else { Console.WriteLine(containerReference.Uri); } var container = containerReference.GetSharedAccessSignature(new SharedAccessBlobPolicy { Permissions = SharedAccessBlobPermissions.Read, SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddDays(7) }); fetcher = CloudSetup.MessageFetcher(containerReference.Uri + container, stream); } else { fetcher = FileSetup.MessageFetcher(new DirectoryInfo(SourceFolder), stream, _recyclableStreamManagerWrapper); } return(fetcher); }
public const int CacheCheckpointSize = 3; // cached in remote offset, cached in local, remote max public CacheFetcher(string sas, string stream, DirectoryInfo folder, IMemoryStreamManager streamManager) { StreamName = stream; _streamManager = streamManager; var raw = CloudSetup.GetReaderRaw(sas); _remote = raw.Item2; _remotePos = raw.Item1; var streamDir = Path.Combine(folder.FullName, stream); var di = new DirectoryInfo(streamDir); if (!di.Exists) { di.Create(); } _outputFile = new FileInfo(Path.Combine(di.FullName, CacheStreamName)); _outputCheckpoint = new FileInfo(Path.Combine(di.FullName, CachePositionName)); _outputFile.Refresh(); _cacheWriter = _outputFile.Open(_outputFile.Exists ? FileMode.Open : FileMode.Create, FileAccess.ReadWrite, FileShare.Read); _writer = new BinaryWriter(_cacheWriter, CacheFormat); _cacheChk = new FileCheckpointArrayWriter(_outputCheckpoint, CacheCheckpointSize); }
MessageWriter Get(string stream) { _source.Token.ThrowIfCancellationRequested(); stream = stream.ToLowerInvariant(); return(_writers.GetOrAdd(stream, s => { var container = _factory.GetContainerReference(stream); return CloudSetup.CreateAndInitWriter(container); })); }
public GetStreamResponse GetReadAccess(string stream) { using (Metrics.StartTimer("api.read")) { var container = _client.GetContainerReference(stream); var signature = CloudSetup.GetReadAccessSignature(container); return(new GetStreamResponse { Signature = signature }); } }
MessageWriter CreateWriter(string name) { var container = TestEnvironment.Client.GetContainerReference(_folder); return(CloudSetup.CreateAndInitWriter(container)); }
public async Task <MessageReader> GetMessageReaderAsync(string stream) { var signature = await GetReaderSignatureAsync(stream).ConfigureAwait(false); return(CloudSetup.GetReader(signature)); }
// Start is called before the first frame update void Start() { setup = GetComponent <CloudSetup>(); }
public MessageFetcher GetFetcher(string streamName, IMemoryStreamManager manager = null) { var sas = GetReaderSignature(streamName); return(CloudSetup.MessageFetcher(sas, streamName, manager ?? MemoryStreamFactoryManager.Instance)); }