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; }
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(); }
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(); }
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); } }