TSMBufferCreate¶
Traffic Server marshall buffer API.
概要¶
#include <ts/ts.h>
-
TSReturnCode TSMBufferDestroy(TSMBuffer bufp)¶
-
TSReturnCode TSHandleMLocRelease(TSMBuffer bufp, TSMLoc parent, TSMLoc mloc)¶
解説¶
マーシャルバッファー すなわち TSMBuffer
はパースされた URL 、MIME ヘッダー、HTTP ヘッダーを格納するヒープデータ構造です。マーシャルバッファーの外で新しいオブジェクトを割り当て、その値をマーシャルバッファー内で変更することができます。オブジェクトを操作するときにはいつでも、オブジェクト (TSMLoc
) のハンドルとオブジェクトを含んでいるマーシャルバッファー (TSMBuffer
) が必要になります。
Any marshal buffer fetched by transaction getters will be used by other parts of the system. Be careful not to destroy these shared, transaction marshal buffers.
TSMBufferCreate()
は新しいマーシャルバッファーを作成し参照数を初期化します。TSMBufferDestroy()
は参照数を無視してマーシャルバッファー bufp を破棄します。マーシャルバッファーに紐付けられた内部データバッファーがマーシャルバッファーによって割り当てられていた場合はそれも破棄されます。
TSHandleMLocRelease()
は TSMLoc
parent で作成された TSMLoc
mloc を解放します。TSMLoc
がトランザクションから取得された場合は parent TSMLoc
を持っていません。定数 TS_NULL_MLOC
を parent として使用してください。
戻り値¶
TSMBufferDestroy()
と TSHandleMLocRelease()
は 成功時に TS_SUCCESS
を返し、失敗時には TS_ERROR
を返します。TSMBufferCreate()
は新しい TSMBuffer
を返します。
例¶
#include <ts/ts.h>
static void
copyResponseMimeHdr (TSCont pCont, TSHttpTxn pTxn)
{
TSMBuffer respHdrBuf, tmpBuf;
TSMLoc respHttpHdrLoc, tmpMimeHdrLoc;
if (!TSHttpTxnClientRespGet(pTxn, &respHdrBuf, &respHttpHdrLoc)) {
TSError("couldn't retrieve client response header0);
TSHandleMLocRelease(respHdrBuf, TS_NULL_MLOC, respHttpHdrLoc);
goto done;
}
tmpBuf = TSMBufferCreate();
tmpMimeHdrLoc = TSMimeHdrCreate(tmpBuf);
TSMimeHdrCopy(tmpBuf, tmpMimeHdrLoc, respHdrBuf, respHttpHdrLoc);
TSHandleMLocRelease(tmpBuf, TS_NULL_MLOC, tmpMimeHdrLoc);
TSHandleMLocRelease(respHdrBuf, TS_NULL_MLOC, respHttpHdrLoc);
TSMBufferDestroy(tmpBuf);
done:
TSHttpTxnReenable(pTxn, TS_EVENT_HTTP_CONTINUE);
}
参考¶
TSAPI(3ts)