Transport::TPbuffer Struct Reference

Extensible buffer, used to prepare outgoing TPDUs. More...

#include <TPlayer.h>

Public Member Functions

void Free ()
 

Static Public Member Functions

static TPbufferGetNew (unsigned offset)
 
static TPbufferAdd (TPbuffer *bufp, const u_char *bytes, unsigned len)
 Add bytes to buffer.
 

Data Fields

unsigned dsize
 Total size of buffer.
 
unsigned doff
 Offset at which Layer starts writing.
 
unsigned dlen
 Current length of data from doff.
 
int dfd
 FD of backing file, or -1 if none.
 
void * mdata
 Start address of mmapped data (if any)
 
unsigned mlen
 Length of mmapped data (if any)
 
u_char data [1]
 Data, actually extensible.
 

Static Public Attributes

static const unsigned TPBINC = 128
 

Detailed Description

Extensible buffer, used to prepare outgoing TPDUs.

Definition at line 40 of file TPlayer.h.

Member Function Documentation

◆ GetNew()

static TPbuffer * Transport::TPbuffer::GetNew ( unsigned  offset)
inlinestatic

Definition at line 51 of file TPlayer.h.

51 {
52 TPbuffer *newbp = static_cast<TPbuffer *>
53 (malloc (TPBINC + sizeof (*newbp)));
54
55 if ( newbp == 0 )
56 return 0;
57
58 newbp->dsize = TPBINC;
59 newbp->doff = offset;
60 newbp->dlen = 0;
61 newbp->dfd = -1;
62 newbp->mdata = NULL;
63 newbp->mlen = 0;
64
65 return newbp;
66 }

◆ Free()

void Transport::TPbuffer::Free ( )
inline

Definition at line 68 of file TPlayer.h.

68 {
69 if ( dfd > 0 ) close (dfd);
70 if ( mdata != NULL )
71 isode_munmap(mdata, mlen);
72 free (this);
73 }
int dfd
FD of backing file, or -1 if none.
Definition TPlayer.h:46
unsigned mlen
Length of mmapped data (if any)
Definition TPlayer.h:48
void * mdata
Start address of mmapped data (if any)
Definition TPlayer.h:47

◆ Add()

static TPbuffer * Transport::TPbuffer::Add ( TPbuffer bufp,
const u_char *  bytes,
unsigned  len 
)
inlinestatic

Add bytes to buffer.

Definition at line 77 of file TPlayer.h.

79 {
80 unsigned newlen = bufp->doff + bufp->dlen + len;
81
82 if ( bufp->dsize < newlen ) {
83 unsigned newsize = bufp->dsize + TPBINC;
84 if ( newsize < newlen )
85 newsize = newlen + TPBINC;
86
87 TPbuffer *newbp = static_cast<TPbuffer *>
88 (realloc (bufp, sizeof (*bufp) + newsize));
89
90 if ( newbp == 0 ) {
91 MSG_Base_Nomem_LOG (sizeof (*bufp) + newsize);
92 free (bufp);
93 return 0;
94 }
95
96 bufp = newbp;
97 bufp->dsize = newsize;
98 }
99
100 memcpy (bufp->data + bufp->doff + bufp->dlen, bytes, len);
101
102 bufp->dlen += len;
103
104 return bufp;
105 }

References data, dlen, doff, and dsize.

Field Documentation

◆ TPBINC

const unsigned Transport::TPbuffer::TPBINC = 128
static

Definition at line 41 of file TPlayer.h.

◆ dsize

unsigned Transport::TPbuffer::dsize

Total size of buffer.

Definition at line 43 of file TPlayer.h.

Referenced by Add().

◆ doff

unsigned Transport::TPbuffer::doff

Offset at which Layer starts writing.

Definition at line 44 of file TPlayer.h.

Referenced by Add().

◆ dlen

unsigned Transport::TPbuffer::dlen

Current length of data from doff.

Definition at line 45 of file TPlayer.h.

Referenced by Add().

◆ dfd

int Transport::TPbuffer::dfd

FD of backing file, or -1 if none.

Definition at line 46 of file TPlayer.h.

◆ mdata

void* Transport::TPbuffer::mdata

Start address of mmapped data (if any)

Definition at line 47 of file TPlayer.h.

◆ mlen

unsigned Transport::TPbuffer::mlen

Length of mmapped data (if any)

Definition at line 48 of file TPlayer.h.

◆ data

u_char Transport::TPbuffer::data[1]

Data, actually extensible.

Definition at line 49 of file TPlayer.h.

Referenced by Add().


The documentation for this struct was generated from the following file:

All rights reserved © 2002 - 2024 Isode Ltd.