SessionElementLogReader.cs 768 B

1234567891011121314151617181920212223242526272829303132
  1. namespace WinSCP
  2. {
  3. internal class SessionElementLogReader : ElementLogReader
  4. {
  5. public SessionElementLogReader(CustomLogReader parentReader) :
  6. base(parentReader)
  7. {
  8. }
  9. public override void Dispose()
  10. {
  11. // Now it's ok if we encounter </session>.
  12. _disposing = true;
  13. base.Dispose();
  14. }
  15. public override bool Read(LogReadFlags flags)
  16. {
  17. bool result = base.Read(flags);
  18. if (_read && !_disposing)
  19. {
  20. throw new SessionLocalException(Session, "Session has unexpectedly closed");
  21. }
  22. return result;
  23. }
  24. private bool _disposing;
  25. }
  26. }