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()
Releases the TSMLoc
mloc created
from the TSMLoc
parent. If a TSMLoc
is obtained from
a transaction, it does not have a parent TSMLoc
. Use the
the constant TS_NULL_MLOC
as its parent.
戻り値¶
TSMBufferDestroy()
and TSHandleMLocRelease()
return
TS_SUCCESS
on success, or TS_ERROR
on failure.
TSMBufferCreate()
returns the new 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)