DataTCPSocketByteInputStream (クラス)
public sealed DataTCPSocketByteInputStream {inherits {DataTCPSocketStream-of byte}, DataSocketByteInputStream}
パッケージ: CURL.IO.SOCKET

DataSocket.to-InputStream が返すストリームの実装に使用するクラス。DataSocket.to-InputStream を実装するコードでのみこのクラスを初期化します。
このクラスは非同期インターフェイスも実装します。この場合、ReadableStreamEventEventHandlerDataTCPSocketByteInputStream.add-event-handler に、ReadableTimeoutStreamEventEventHandlerDataTCPSocketByteInputStream.add-timeout-event-handler に渡すことができます。

プログラミング注意事項

明示的には使用されません。

プロパティ
プロパティ 継承 DataTCPSocketStream-of: _client-socket, _timeout, client-socket, non-blocking-supported?, open?, origin-url, real-event-target, timeout
プロパティ 継承 ProxyIOEventTarget: event-enabled?, soonest-expiration
プロパティ 継承 DefaultIOEventTarget: doing-event-dispatch?, handlers, saved-event-classes, saved-event-classes-valid?
プロパティ 継承 GenericInputStream: when-last-modified
プロパティ 継承 EventTarget: event-handlers

メソッド
add-event-handler:指定された型の IOEventEventHandler を追加または変更します (非タイムアウト クラスのみ。タイムアウト イベントには IOEventTarget.add-timeout-event-handler を使用します)。
public {DataTCPSocketByteInputStream.add-event-handler
event-handler:EventHandler
}:void
add-timeout-event-handler:IOTimeoutEvent の特定のサブタイプの EventHandler を追加または変更します。
public {DataTCPSocketByteInputStream.add-timeout-event-handler
event-handler:EventHandler,
timeout:Time
}:void
close:ストリームを閉じます。呼び出されると、ストリームを使用不可能にして Stream-of.open?false を返すことを確かめます。
public {DataTCPSocketByteInputStream.close}:void
read:self から t タイプのオブジェクトを n まで読み取ります。
public {DataTCPSocketByteInputStream.read
out:#{Array-of byte} = null,
start:int = 0,
n:int = max-int - start,
allow-short-read?:bool = false,
non-blocking?:bool = false
}:(vals:{Array-of byte}, number-of-bytes:int)
read-one:self から最初の要素を取得します。
public {DataTCPSocketByteInputStream.read-one}:(val:byte, eof?:bool)
shutdown:この入力ストリームのソケットを閉じます。
public {DataTCPSocketByteInputStream.shutdown}:void
メソッド 継承 DataTCPSocketStream-of: call-handler, enqueue-timeout, handle-event
メソッド 継承 DataSocketByteInputStream: async-read
メソッド 継承 Stream-of: verify-open
メソッド 継承 ProxyIOEventTarget: add-targeted-event-handler, remove-event-handler, remove-event-handler-by-type, remove-targeted-event-handler, remove-targeted-event-handler-by-type, reset-event-handler-expiration
メソッド 継承 InputStream-of: copy-out, read-anys, read-one-any, to-Iterator
メソッド 継承 DefaultIOEventTarget: begin-event-enabled, begin-using-handlers, end-event-enabled, end-using-handlers, event-handler-present?, handle-event-with-now, handlers-resize, make-IOEvent, new-handlers, verify-event
メソッド 継承 EventTarget: accepts-event-class?
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize




プロパティ詳細


メソッド詳細
add-event-handler (メソッド)
public {DataTCPSocketByteInputStream.add-event-handler
event-handler:EventHandler
}:void

指定された型の IOEventEventHandler を追加または変更します (非タイムアウト クラスのみ。タイムアウト イベントには IOEventTarget.add-timeout-event-handler を使用します)。

event-handler: イベントまたはタイムアウトが発生したときに呼び出されるルーチンを持つ EventHandler。呼び出し側は、呼び出しで EventHandler を作成できます。

戻り値

追加された EventHandler。このハンドラを追加して削除する場合、呼び出し側が別にオブジェクトを作成しなくてすむようにこの戻り値を保存できます。

オーバーライド

これは、DefaultIOEventTarget.handlers を使用します。


add-timeout-event-handler (メソッド)
public {DataTCPSocketByteInputStream.add-timeout-event-handler
event-handler:EventHandler,
timeout:Time
}:void

IOTimeoutEvent の特定のサブタイプの EventHandler を追加または変更します。

event-handler: タイムアウト イベントが発生したときに呼び出されるルーチンを備えた EventHandler。呼び出し側は、呼び出しで EventHandler を作成できます。
timeout: このハンドラを呼び出す前に、アクティビティが発生せずに経過するタイムアウト期間の Time

戻り値

追加された EventHandler。このハンドラを追加して削除する場合、呼び出し側が別にオブジェクトを作成しなくてすむようにこの戻り値を保存できます。

オーバーライド

これは、DefaultIOEventTarget.handlers を使用します。


close (メソッド)
public {DataTCPSocketByteInputStream.close}:void

ストリームを閉じます。呼び出されると、ストリームを使用不可能にして Stream-of.open?false を返すことを確かめます。



read (メソッド)
public {DataTCPSocketByteInputStream.read
out:#{Array-of byte} = null,
start:int = 0,
n:int = max-int - start,
allow-short-read?:bool = false,
non-blocking?:bool = false
}:(vals:{Array-of byte}, number-of-bytes:int)

self から t タイプのオブジェクトを n まで読み取ります。

out: オブジェクトを受け取る Arraynull (既定値) の場合は、新しい Array が割り当てられて返されます。
start: オブジェクトはこのパラメータが指定するスロットから out に書き込まれます。
n: 読み取られるオブジェクトの最大数。
allow-short-read?: この呼び出しが n 未満の数を返すか、データのストリーム全体を返すかを示します。既定は false です。ほとんどのストリームではサポートされていませんが、サポートされていない場合でもエラーや例外は発生しません。予想されるデータ量が事前に明らかでなく、追加のデータを待機するべきではないネットワーキングのような状況でこれを使用します。
non-blocking?: 呼び出しの非ブロッキング実行、つまり直ちに使用できるデータがない場合にデータを読み込まずにすぐに返すかどうかを示します。既定は false です。これが true の場合は、allow-short-read? は暗黙的に true になります。

戻り値

結果を受け取った {Array-of t} および受け取った結果の数を返します。out を指定するとそれが返されます。それ以外の場合、このメソッドは新規の {Array-of t} を割り当ててそれを返します。

2 つ目の戻り値が -1 の場合、ストリームが EOF であることを示します。その場合、データは読み込まれていません。さらに non-blocking? が true の場合、戻り値が 0 になる可能性があり、これはすぐに使用できるデータがないことを示します。

説明

allow-short-read? または non-blocking?true でない限り、このメソッドは n 要素が読み取られるか、ストリームが EOF になるまで返されません。この場合、準備が完了しているデータ量を返します (ただし、allow-short-read? だけが true の場合は少なくとも 1 つが返されます)。

non-blocking?true でない限り、self がまだ開いていて、使用できるデータがない場合にはこのメソッドはブロックします。

注意事項

self が現在開いていない場合はエラーが発生します。

start < 0 or n < 0 の場合はエラーが発生します。


read-one (メソッド)
public {DataTCPSocketByteInputStream.read-one}:(val:byte, eof?:bool)

self から最初の要素を取得します。

戻り値

最初の戻り値は self の入力ストリームから取得したアイテムになります。ストリームが EOF の場合、2 番目の戻り値は true になります。その場合、最初の戻り値は null または 0 になります。

説明

self がまだ開いていて、使用できるデータがない場合にはこのメソッドはブロックします。

注意事項

現在 self が開いてなく読み込み可能でない場合はエラーになります。

オーバーライド

非抽象サブクラスにより実装される必要があります。実装では次のようなコードを含める必要があリます。
{if not self.open? then
    {throw {new IOException, {format "%s not open", self}}}
}
このメソッドの実装の上部に記述します。


shutdown (メソッド)
public {DataTCPSocketByteInputStream.shutdown}:void

この入力ストリームのソケットを閉じます。

プログラミング注意事項

呼び出された後は、このストリームは close の実行以外には何もできませんが、同じソケットの DataSocketByteOutputStream はまだ使用できます。後でこのストリームで close を呼び出す必要があります。