IO バッファー

The IO buffer data structure is the building block of the vconnection abstraction. An IO buffer (TSIOBuffer) is composed of a list of buffer blocks that point to buffer data. Both the buffer block (TSIOBufferBlock) and buffer data (TSIOBufferData) data structures are reference-counted, so they can reside in multiple buffers at the same time. This makes it extremely efficient to copy data from one IO buffer to another via TSIOBufferCopy(), since Traffic Server must only copy pointers and adjust reference counts appropriately (and doesn't actually copy any data).

The IO buffer abstraction provides for a single writer and multiple readers. In order for the readers to have no knowledge of each other, they manipulate IO buffers through the TSIOBufferReader data structure. Since only a single writer is allowed, there is no corresponding TSIOBufferWriter data structure. The writer simply modifies the IO buffer directly. To see an example that illustrates how to use IOBuffers, refer to the sample code in the description of TSIOBufferBlockReadStart().

IO バッファー関数に関する追加情報

  • TSIOBufferReader データ構造は TSIOBuffer に幾つのデータが読み込まれたかを追跡します。これは特定のバッファー reader の現在の開始地点のオフセットバイト数を持ちます。( TSIOBuffer の読込み操作ごとに、 TSIOBufferReader を割り当てる必要があります。)

  • Bytes that have already been read may not necessarily be freed within the TSIOBuffer. To consume bytes that have been read, you must call TSIOBufferReaderConsume().