结构体

io 包中定义了下面几个结构体:

  • ByteReader
  • ByteWriter
  • RawReader
  • Reader
  • Writer
    它们之间的关系是:
  1. +---------------------------------------------------------+
  2. | _ _ _ _ |
  3. | | | | | (_) | |
  4. | | | | |_ __ _| |_ ___ _ __ |
  5. | | |/\| | '__| | __/ _ \ '__| |
  6. | \ /\ / | | | || __/ | |
  7. | \/ \/|_| |_|\__\___|_| |
  8. | |
  9. | +-----------------------------------------------------+ |
  10. | | ______ _ _ _ _ _ | |
  11. | | | ___ \ | | | | | | (_) | | |
  12. | | | |_/ /_ _| |_ ___ | | | |_ __ _| |_ ___ _ __ | |
  13. | | | ___ \ | | | __/ _ \| |/\| | '__| | __/ _ \ '__| | |
  14. | | | |_/ / |_| | || __/\ /\ / | | | || __/ | | |
  15. | | \____/ \__, |\__\___| \/ \/|_| |_|\__\___|_| | |
  16. | | __/ | | |
  17. | | |___/ | |
  18. | +-----------------------------------------------------+ |
  19. +---------------------------------------------------------+
  1. +-------------------------------------------------------------+
  2. | ______ _ |
  3. | | ___ \ | | |
  4. | | |_/ /___ __ _ __| | ___ _ __ |
  5. | | // _ \/ _` |/ _` |/ _ \ '__| |
  6. | | |\ \ __/ (_| | (_| | __/ | |
  7. | \_| \_\___|\__,_|\__,_|\___|_| |
  8. | |
  9. | +---------------------------------------------------------+ |
  10. | | ______ ______ _ | |
  11. | | | ___ \ | ___ \ | | | |
  12. | | | |_/ /__ ___ _| |_/ /___ __ _ __| | ___ _ __ | |
  13. | | | // _` \ \ /\ / / // _ \/ _` |/ _` |/ _ \ '__| | |
  14. | | | |\ \ (_| |\ V V /| |\ \ __/ (_| | (_| | __/ | | |
  15. | | \_| \_\__,_| \_/\_/ \_| \_\___|\__,_|\__,_|\___|_| | |
  16. | | +-----------------------------------------------------+ | |
  17. | | |______ _ ______ _ | | |
  18. | | || ___ \ | | | ___ \ | | | | |
  19. | | || |_/ /_ _| |_ ___| |_/ /___ __ _ __| | ___ _ __ | | |
  20. | | || ___ \ | | | __/ _ \ // _ \/ _` |/ _` |/ _ \ '__|| | |
  21. | | || |_/ / |_| | || __/ |\ \ __/ (_| | (_| | __/ | | | |
  22. | | |\____/ \__, |\__\___\_| \_\___|\__,_|\__,_|\___|_| | | |
  23. | | | __/ | | | |
  24. | | | |___/ | | |
  25. | | +-----------------------------------------------------+ | |
  26. | +---------------------------------------------------------+ |
  27. +-------------------------------------------------------------+

其中 ByteReaderByteWriter 是用于对字节序列的读写,它本身跟 hprose 序列化无关,可以单独作为字节序列读写的工具来用,因为是读写分离的,所以性能上要比 bytes 包下面的那几个用于对字节序列化读写的结构体高效一点点,但是功能也少一些。

RawReader 用于读取 hprose 的原始数据,用户通常不需要使用该结构体。

WriterReader 用于对数据进行 hprose 的细粒度序列化和反序列化操作。