6.67. kink/javahost/JAVA_CHANNEL_OUTPUT

JavaのWritableByteChannelにもとづくoutputを提供する。

6.67.1. JAVA_CHANNEL_OUTPUT.new(Channel ...[$config={}])

newはjava.nio.channels.WritableByteChannelをラップするoutputを作る。

コンフィグメソッド:

• C.buffer(...[Max_buf_size])

• C.close_method_handle(Close_mh): default = WritableByteChannel::close

バッファリング

C.bufferが呼ばれた場合、結果のoutputはユーザ空間でのバッファリングを行う。Max_buf_sizeが与えられた場合、バッファサイズはバイト長でMax_buf_sizeを超えない。

C.bufferが呼ばれない場合、結果のoutputはユーザ空間でのバッファリングを行わない。

outputの閉じ方

結果のoutputのcloseメソッドが呼ばれた時には、Channelを引数としてClose_mhを呼び出す。

Close_mhの呼び出しがIOExceptionを投げた場合、closeはIOエラーで終了する。

事前条件

Channelはjava値であり、そのobjectReferenceはWritableByteChannelでなければならない。objectReferenceはまた、Close_mhのパラメータ型のインスタンスでなければならない。

Max_buf_sizeは正の整数のnum値でなければならない。

Close_mhは、引数をひとつ取るMethodHandleのjava値でなければならない。

Close_mhの呼び出しは、IOエラーが起きた場合、IOExceptionを投げなければならない。