transport.go 515 B

123456789101112131415161718192021222324252627282930313233
  1. package net
  2. import (
  3. "io"
  4. _ "github.com/v2ray/v2ray-core/log"
  5. )
  6. const (
  7. bufferSize = 32 * 1024
  8. )
  9. func ReaderToChan(stream chan<- []byte, reader io.Reader) error {
  10. for {
  11. buffer := make([]byte, bufferSize)
  12. nBytes, err := reader.Read(buffer)
  13. if err != nil {
  14. return err
  15. }
  16. stream <- buffer[:nBytes]
  17. }
  18. return nil
  19. }
  20. func ChanToWriter(writer io.Writer, stream <-chan []byte) error {
  21. for buffer := range stream {
  22. _, err := writer.Write(buffer)
  23. if err != nil {
  24. return err
  25. }
  26. }
  27. return nil
  28. }