private static BasicWrapper.WrapperDelegate delegateConverter(StreamFactoryDelegate streamFactory)
        {
            return(delegate(IDataStream s)
            {
                Stream baseStream;
                if (s.Length > 50 * 1024 * 1024)
                {
                    baseStream = new FileStream(Path.GetTempFileName(), FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096, FileOptions.DeleteOnClose);
                }
                else
                {
                    baseStream = new MemoryStream();
                }
                using (var compression = streamFactory(baseStream))
                {
                    var tmpStream = new ToStream(s);
                    tmpStream.CopyTo(compression);
                }

                var ret = FromStream.ToIDataStream(baseStream);
                if (ret.Length > 5 * 1024 * 1024)
                {
                    return new LazyLoggedFile(ret);
                }
                else
                {
                    return new ByteArray(ret);
                }
            });
        }
    public async Task Start()
    {
        var position = await _checkpointStore.GetCheckpoint();

        _subscription = _isAllStream
            ? await _client.SubscribeToAllAsync(
            GetAllStreamPosition(),
            EventAppeared,
            subscriptionDropped : SubscriptionDropped)
            : await _client.SubscribeToStreamAsync(
            _streamName,
            GetStreamPosition(),
            EventAppeared
            );

        FromAll GetAllStreamPosition()
        => position.HasValue
                ? FromAll.After(new Position(position.Value, position.Value))
                : FromAll.Start;

        FromStream GetStreamPosition()
        => position.HasValue
                ? FromStream.After(position.Value)
                : FromStream.Start;
    }
Exemple #3
0
        private void OnReceive(IAsyncResult e)
        {
            try
            {
                var length = Connection.EndReceive(e);
                if (length <= 0 || !Connection.Connected)
                {
                    Log.ConditionalDebug("OnReceive stop. Length: {0}, connected: {1}", length, Connection.Connected);
                    Stop();
                    return;
                }
                var data = Encryptor.Decrypt(FromBuffer, 0, length);
                FromStream.PushBack(data);
            }
            catch (Exception ex)
            {
                Log.ConditionalDebug(ex);
                Stop();
                return;
            }
            try
            {
                Session.ProcessStream(this, FromStream);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }

            BeginReceive();
        }
Exemple #4
0
        private void OnReceive(IAsyncResult e)
        {
            try
            {
                var length = From.EndReceive(e);
                if (length <= 0 || !From.Connected)
                {
                    Logger.Process("OnReceive stop. Length: {0}, connected: {1}", length, From.Connected);
                    Stop(From);
                    return;
                }
                else
                {
                    var data = Encryptor.Decrypt(FromBuffer, 0, length);
                    FromStream.PushBack(data);
                }
            }
            catch (Exception ex)
            {
                Logger.Process("OnReceive", ex);
                Stop(From);
            }
            try
            {
                Session.ProcessStream(this, FromStream);
            }
            catch (Exception ex)
            {
                Logger.Process("OnReceive - ProcessStream", ex);
            }

            BeginReceive();
        }
Exemple #5
0
 public Network.DataFormats.IDataStream GetValue()
 {
     try
     {
         var stream = FromStream.ToIDataStream(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read));
         if (stream.Length > 5 * 1024 * 1024)
         {
             return(new LazyLoggedFile(stream));
         }
         else
         {
             return(new ByteArray(stream));
         }
     }
     catch
     {
         return(EmptyData.Instance);
     }
 }