Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }
Example #6
0
        public async Task <MessageReader> GetMessageReaderAsync(string stream)
        {
            var signature = await GetReaderSignatureAsync(stream).ConfigureAwait(false);

            return(CloudSetup.GetReader(signature));
        }
Example #7
0
 // Start is called before the first frame update
 void Start()
 {
     setup = GetComponent <CloudSetup>();
 }
Example #8
0
        public MessageFetcher GetFetcher(string streamName, IMemoryStreamManager manager = null)
        {
            var sas = GetReaderSignature(streamName);

            return(CloudSetup.MessageFetcher(sas, streamName, manager ?? MemoryStreamFactoryManager.Instance));
        }