NCBI C++ ToolKit
Typedefs | Functions
Buffering Services
+ Collaboration diagram for Buffering Services:

Typedefs

typedef struct SNcbiBufBUF
 handle of a buffer More...
 

Functions

size_t BUF_SetChunkSize (BUF *pBuf, size_t chunk_size)
 
size_t BUF_Size (BUF buf)
 
int BUF_PrependEx (BUF *pBuf, void *base, size_t alloc_size, void *data, size_t size)
 
int BUF_Prepend (BUF *pBuf, const void *data, size_t size)
 
int BUF_AppendEx (BUF *pBuf, void *base, size_t alloc_size, void *data, size_t size)
 
int BUF_Append (BUF *pBuf, const void *data, size_t size)
 
int BUF_Write (BUF *pBuf, const void *data, size_t size)
 
int BUF_Pushback (BUF *pBuf, const void *data, size_t size)
 
size_t BUF_Peek (BUF buf, void *data, size_t size)
 
size_t BUF_PeekAt (BUF buf, size_t pos, void *data, size_t size)
 
size_t BUF_PeekAtCB (BUF buf, size_t pos, size_t(*callback)(void *cbdata, const void *buf, size_t size), void *cbdata, size_t size)
 
size_t BUF_Read (BUF buf, void *data, size_t size)
 
void BUF_Erase (BUF buf)
 
int BUF_Splice (BUF *dst, BUF src)
 
void BUF_Destroy (BUF buf)
 

Detailed Description

Typedef Documentation

◆ BUF

typedef struct SNcbiBuf* BUF

handle of a buffer

Definition at line 72 of file ncbi_buffer.h.

Function Documentation

◆ BUF_Append()

int BUF_Append ( BUF pBuf,
const void *  data,
size_t  size 
)

Equivalent to BUF_AppendEx(pBuf, 0, 0, data, size) NOTE: the appended chunk is thus read-only and will not be auto-freed.

Definition at line 175 of file ncbi_buffer.c.

References buf, BUF_AppendEx(), data, and ncbi::grid::netcache::search::fields::size.

Referenced by s_CreateConnectorMemory().

◆ BUF_AppendEx()

int BUF_AppendEx ( BUF pBuf,
void *  base,
size_t  alloc_size,
void *  data,
size_t  size 
)

Append a block of data (of the specified size) past the end of the buffer (to be read last). Note that unlike BUF_Write(), in this call the data is not copied to the buffer but instead is just linked in from the original location. The "base" argument contains a pointer to be "free()"d when the data chunk is done with (it also may be NULL for no action to be taken). Return non-zero (true) if succeeded, zero (false) if failed.

Definition at line 138 of file ncbi_buffer.c.

References assert, SBufChunkTag::base, buf, BUF_SetChunkSize(), SBufChunkTag::data, data, SBufChunkTag::extent, free(), SBufChunkTag::next, s_BUF_AllocChunk(), ncbi::grid::netcache::search::fields::size, and SBufChunkTag::size.

Referenced by BUF_Append(), s_Disconnect(), s_Read_(), s_ReadData(), s_ReadHeader(), s_StripToPattern(), and s_VT_Write().

◆ BUF_Destroy()

void BUF_Destroy ( BUF  buf)

◆ BUF_Erase()

void BUF_Erase ( BUF  buf)

◆ BUF_Peek()

size_t BUF_Peek ( BUF  buf,
void *  data,
size_t  size 
)

Equivalent to "BUF_PeekAt(buf, 0, data, size)", see description below.

Definition at line 408 of file ncbi_buffer.c.

References buf, BUF_PeekAt(), and ncbi::grid::netcache::search::fields::size.

Referenced by BUF_Read(), s_CONN_Read(), s_Connect(), s_Read_(), s_ReadHeader(), s_SendMsg(), and x_ReadChunkHead().

◆ BUF_PeekAt()

size_t BUF_PeekAt ( BUF  buf,
size_t  pos,
void *  data,
size_t  size 
)

Copy up to "size" bytes stored in "buf" (starting at position "pos") to a destination area pointed to by "data". Return the # of copied bytes (can be less than "size"). Return zero and do nothing if "buf" is NULL or "pos" >= BUF_Size(buf). If "data" is NULL, return the number of bytes what would have been copied; in other words, the amount of data available in "buf" from position "pos", not exceeding "size" bytes (0 results when "pos" is past the end of "buf").

Definition at line 402 of file ncbi_buffer.c.

References buf, BUF_PeekAtCB(), ncbi::grid::netcache::search::fields::size, and x_BUF_MemcpyCB().

Referenced by BUF_Peek().

◆ BUF_PeekAtCB()

size_t BUF_PeekAtCB ( BUF  buf,
size_t  pos,
size_t(*)(void *cbdata, const void *buf, size_t size callback,
void *  cbdata,
size_t  size 
)

Call "callback" repeatedly on up to "size" bytes stored in "buf" (starting at position "pos"), in chunks. Pass "cbdata" as an opaque parameter to the "callback". Processing stops when all buffer bytes (but no more than "size" bytes) have been visited by the "callback", or when the "callback" returns a value less than its passed "size" argument (the "callback" may _not_ return a value greater than its "size" argument!). Return the # of processed bytes (can be less than "size"). Return zero and do nothing if "buf" is NULL or "pos" >= BUF_Size(buf). If "callback" is NULL, return the number of bytes that would have been visited if a callback kept returning the size of data it was given to; in other words, the amount of data available in "buf" from position "pos", not exceeding "size" bytes (0 results when "pos" is past the end of "buf").

Referenced by s_ConnectAndSend(), s_ReadBufToString(), s_WritePending(), and x_Pushback().

◆ BUF_Prepend()

int BUF_Prepend ( BUF pBuf,
const void *  data,
size_t  size 
)

Equivalent to BUF_PrependEx(pBuf, 0, 0, data, size) NOTE: the prepended chunk is thus read-only and will not be auto-freed.

Definition at line 218 of file ncbi_buffer.c.

References buf, BUF_PrependEx(), data, and ncbi::grid::netcache::search::fields::size.

Referenced by HTTP_CreateTunnelEx().

◆ BUF_PrependEx()

int BUF_PrependEx ( BUF pBuf,
void *  base,
size_t  alloc_size,
void *  data,
size_t  size 
)

Prepend a block of data (of the specified size) at the beginning of the buffer (to be read first). Note that unlike BUF_Pushback(), in this call the data is not copied into the buffer but instead is just linked in from the original location. The "base" argument contains a pointer to be "free()"d when the data chunk is done with (it also may be NULL for no action to be taken). Return non-zero (true) if succeeded, zero (false) if failed.

Definition at line 181 of file ncbi_buffer.c.

References assert, SBufChunkTag::base, buf, BUF_SetChunkSize(), SBufChunkTag::data, data, SBufChunkTag::extent, free(), SBufChunkTag::next, s_BUF_AllocChunk(), ncbi::grid::netcache::search::fields::size, and SBufChunkTag::size.

Referenced by BUF_Prepend().

◆ BUF_Pushback()

int BUF_Pushback ( BUF pBuf,
const void *  data,
size_t  size 
)

Write the data to the very beginning of "*pBuf" (to be read first). Return non-zero if successful ("size"==0 is always so); otherwise return zero (failed memory allocation or NULL "src" of non-zero "size"). NOTE: if "*pBuf" == NULL then create it.

Definition at line 285 of file ncbi_buffer.c.

References assert, buf, BUF_SetChunkSize(), head, memmove, next(), s_BUF_AllocChunk(), and ncbi::grid::netcache::search::fields::size.

Referenced by CONN_Pushback(), CONN_ReadLine(), and s_BUF_IO().

◆ BUF_Read()

size_t BUF_Read ( BUF  buf,
void *  data,
size_t  size 
)

Copy up to "size" bytes stored in "buf" to "data" and remove the copied data from the "buf". Return the # of copied-and/or-removed bytes (can be less than "size"). NOTE: if "buf" == NULL then do nothing and return 0 if "data" == NULL then do not copy data anywhere (still, remove it)

Definition at line 414 of file ncbi_buffer.c.

References assert, buf, BUF_Peek(), free(), head, and ncbi::grid::netcache::search::fields::size.

Referenced by s_BUF_IO(), s_CONN_Read(), s_CreateOnTop(), s_FTPExecute(), s_Read_(), s_ReadBufToString(), s_ReadFullResponse(), s_ReadHeader(), s_ReadStrFromBUF(), s_VT_Read(), SERV_Print(), URL_ConnectEx(), and CNetScheduleHandler::x_ProcessMsgBatchSubmit().

◆ BUF_SetChunkSize()

size_t BUF_SetChunkSize ( BUF pBuf,
size_t  chunk_size 
)

Set minimal size of a buffer memory chunk. Return the actually set chunk size on success; zero on error. NOTE: if "*pBuf" == NULL then create it; if "chunk_size" is passed 0 then set it to BUF_DEF_CHUNK_SIZE.

Definition at line 65 of file ncbi_buffer.c.

References assert, buf, BUF_ALIGN, BUF_DEF_CHUNK_SIZE, chunk_size, and malloc().

Referenced by BUF_AppendEx(), BUF_PrependEx(), BUF_Pushback(), BUF_Splice(), BUF_Write(), DSOCK_CreateEx(), s_Accept(), s_Create(), and s_CreateOnTop().

◆ BUF_Size()

size_t BUF_Size ( BUF  buf)

◆ BUF_Splice()

int BUF_Splice ( BUF dst,
BUF  src 
)

Append all contents of the source buffer "src" to the destination buffer "*dst" (creating the buffer as necessary if "dst" is NULL), making the source buffer "src" empty (as with BUF_Erase(src)). Return non-zero if successful; 0 in case of an error. NOTE: do nothing if "src" is either NULL or contains no data. NOTE: the call re-links internal structures without copying any actual data.

Definition at line 477 of file ncbi_buffer.c.

References assert, BUF_SetChunkSize(), SNcbiBuf::last, SNcbiBuf::list, SBufChunkTag::size, and SNcbiBuf::size.

Referenced by s_CreateOnTop(), and s_PreRead().

◆ BUF_Write()

int BUF_Write ( BUF pBuf,
const void *  data,
size_t  size 
)

Add new data to the end of "*pBuf" (to be read last). On error (failed memory allocation), return zero value; otherwise return non-zero (i.e. including when "size" is passed as 0). NOTE: if "*pBuf" == NULL then create it if necessary (e.g. if size != 0). NOTE: BUF_Write() with "data" that reside immediately past the end of the data (in the unoccupied space) of a chunk that was previously appended with BUF_Append[Ex]() results in a zero-copy operation (just the pointers updated internally as necessary).

Definition at line 224 of file ncbi_buffer.c.

References assert, buf, BUF_SetChunkSize(), SBufChunkTag::data, SBufChunkTag::extent, memmove, next(), SBufChunkTag::next, s_BUF_AllocChunk(), ncbi::grid::netcache::search::fields::size, and SBufChunkTag::size.

Referenced by s_CONN_Read(), s_Create(), s_CreateOnTop(), s_Disconnect(), s_FTPDele(), s_FTPSyst(), s_PreRead(), s_Read_(), s_ReadFullResponse(), s_RecvMsg(), s_StripToPattern(), s_VT_Write(), s_Write_(), SERV_Print(), Server_CheckLineMessage(), URL_ConnectEx(), x_FTPCompleteUpload(), x_FTPDir(), x_FTPMlstCB(), x_FTPNegotiateCB(), x_FTPParseMdtm(), x_FTPParseSize(), x_FTPRename(), x_FTPRest(), and x_FTPStatCB().

Modified on Sat May 25 14:19:21 2024 by modify_doxy.py rev. 669887