debug.go 656 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package ftp
  2. import "io"
  3. type debugWrapper struct {
  4. conn io.ReadWriteCloser
  5. io.Reader
  6. io.Writer
  7. }
  8. func newDebugWrapper(conn io.ReadWriteCloser, w io.Writer) io.ReadWriteCloser {
  9. return &debugWrapper{
  10. Reader: io.TeeReader(conn, w),
  11. Writer: io.MultiWriter(w, conn),
  12. conn: conn,
  13. }
  14. }
  15. func (w *debugWrapper) Close() error {
  16. return w.conn.Close()
  17. }
  18. type streamDebugWrapper struct {
  19. io.Reader
  20. closer io.ReadCloser
  21. }
  22. func newStreamDebugWrapper(rd io.ReadCloser, w io.Writer) io.ReadCloser {
  23. return &streamDebugWrapper{
  24. Reader: io.TeeReader(rd, w),
  25. closer: rd,
  26. }
  27. }
  28. func (w *streamDebugWrapper) Close() error {
  29. return w.closer.Close()
  30. }