tango.io.device.Conduit (r4809)
License:
BSD style: see license.txt
Version:
Mar 2004: Initial release
Author:
Kris
-
class Conduit : IConduit ¶#
- 管道抽象基类,实现接口 IConduit。仅有管道特有的 read()、 write()、 detach()和 bufferSize()需要被一个具体管道实现中实现。 File是一个例子。
- 管道提供虚拟化访问外部内容,表示象文件或因特网连接这样的东西。管道揭示了一对流,在 tango.io.model.IConduit中模型化,通过如 File & SocketConduit这样的类实现。
别的管道各类也很容易构造:你可以继承tango.io.device.Conduit或实现tango.io.model.IConduit。一个管道典型地读或写(从/到)大块数据的缓冲区,典型的是整个缓冲区。另外,你可以直接调用input.read(dst[])和/或output.write(src[])。
-
this() ¶#
- 为异步容积进行测试。当它在一个 fiber中被创建并且在被调用时有一个高度器被绑定到 fiber时,调度被申请( eligable)。
- 注意 fibers可以在一段时间仅为一个显著的 I/O请求安排( schedule)。 ~this() ¶#
- 收集后清理。见方法 detach()。 char[] toString() [abstract] ¶#
- 返回这个管道的名字。 size_t bufferSize() [abstract] ¶#
- 为这个缓冲管道 I/O返回优先尺寸。 size_t read(void[] dst) [abstract] ¶#
- 从一个管道读到一个目标数组。提供的 dst会与管道中的内容一起组合( populated)。
- 返回读取的字节数,它可以小于 dst中被请求的。每当 end-of-flow(流末端)条件发生时返回 Eof。 size_t write(void [] src) [abstract] ¶#
- 从源数组写到管道。提供的 src内容会被写到管道。
- 返回已写的字节数,它可以小于 dst中被请求的。每当 end-of-flow(流末端)条件发生时返回 Eof。 void detach() [abstract] ¶#
- 断开这个管道。注意这将会同时被用户显式调用,被 GC隐式调用。一定要正确地管理多重分离( detachment )请求:设置一个标志,或必要时设一个哨符值( sentinel value)。 void timeout(uint millisec) [final] ¶#
- 为异步 IO调用设置活动持续期。 uint timeout() [final] ¶#
- 为异步 IO调用获取活动持续期。 bool isAlive() ¶#
- 这个管道还活着吗?默认行为返回 true。 IConduit conduit() [final] ¶#
- 返回宿主( host)。这是流接口的部分。 IOStream flush() ¶#
- 发射缓冲区输出或重置缓冲区输入。 void close() ¶#
- 关闭这个管道。
备注:
- 包括输入和输出被分离,不再可用。 InputStream input() [final] ¶#
- 返回输入流。 OutputStream output() [final] ¶#
- 返回输出流。 void error(char[] msg) [final] ¶#
- 用提供的消息抛出一个 IOException。 OutputStream copy(InputStream src, size_t max = -1) ¶#
- 转移另一个管道内容到这个。返回 dst输出流,在失败时抛出 IOException。 void[] load(size_t max = -1) ¶#
- 加载一个流中的所有位,并返回一个数组中的所有位。 dst数组可以作为一个选项提供,必要时将会被扩展到消耗输入。
- 返回表示内容的一个数组,错误发生时抛出 IOException。 long seek(long offset, Anchor anchor = Anchor.Begin) ¶#
- 在这个流中搜索( seek)。源管道不支持搜索会抛出一个 IOException。 void[] load(InputStream src, size_t max = -1) [static] ¶#
- 加载一个流中的所有位,并返回一个数组中的所有位。 dst数组可以作为一个选项提供,必要时将会被扩展到消耗输入。
- 返回表示内容的一个数组,错误发生时抛出 IOException。 size_t transfer(InputStream src, OutputStream dst, size_t max = -1) [static] ¶#
- 低级的数据传送 ,max表示要转移的最大字节数。
- 如果执行失败返回 Eof,成功返回已复制的字节数。 class InputFilter : InputStream ¶#
- 输入流过滤器的基类。 this(InputStream source) ¶#
- 绑定到提供的流。提供的源流一般绝不会是 null,尽管某些过滤器有懒惰地这样设置需要。 IConduit conduit() ¶#
- 返回宿主管道。 size_t read(void[] dst) ¶#
- 从管道读取内容到一个目标数组。提供的 dst会与管道中的内容组合。
- 返回读取的字节数,它可以小于 dst中请求的。每当一个 end-of-flow (流末端)情况发生时返回 Eof。 void[] load(size_t max = -1) ¶#
- 从一个流中加载位,并返回在一个数组中的所有位。 dst可以作为一个选项提供,必要时它可以被扩展去消耗输入。
- 返回一个表示内容的数组,错误时抛出 IOException。 IOStream flush() ¶#
- 清除任何已缓冲的内容。 long seek(long offset, Anchor anchor = Anchor.Begin) ¶#
- 对这个流搜索( Seek)。目标管道不支持搜索会抛出一个 IOException。 InputStream input() ¶#
- 返回该过滤器的上游宿主。 void close() ¶#
- 关闭输入。 class OutputFilter : OutputStream ¶#
- 输出流过滤器的基类。提供的搜索流一般绝不会是 null,尽管某些过滤器有懒惰地这样设置的需要。 this(OutputStream sink) ¶#
- 绑定提供的流。 IConduit conduit() ¶#
- 返回宿主管道。 size_t write(void[] src) ¶#
- 从一个源数组写到管道。提供的 src内容会被写到管道。
- 返回从 src中写的字节数,它可以比提供的数量少。当一个 end-of-flow(流尾)情况发生时返回 Eof。 OutputStream copy(InputStream src, size_t max = -1) ¶#
- 传送另一个管道的内容到这个中。返回到这个类的引用,失败抛出 IOException 。 IOStream flush() ¶#
- 发射 /清除( Emit/purge)缓冲内容。 long seek(long offset, Anchor anchor = Anchor.Begin) ¶#
- 对这个流搜索( Seek)。目标管道不支持搜索会抛出一个 IOException。 OutputStream output() ¶#
- 返回这个过滤器的上游宿主。 void close() ¶#
- 关闭输出。