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を投げなければならない。