Dialogic Dialogic Global Call IP IP Phone User Manual


 
Code Example
The following code example illustrates the retrieval of MIME information from a
GCEV_OFFERED event. It prints out every MIME part header and MIME part body (except for
any SDP) that exists in the SIP INVITE message. Note that the example uses the extended utility
functions because the parameters for MIME part header fields may be longer than 255 bytes.
INT32 processEvtHandler()
{
METAEVENT metaEvent;
GC_PARM_BLK *parmblkp = NULL;
GC_PARM_DATAP t_gcParmDatap = NULL;
GC_PARM_BLK *parmblkp2 = NULL;
.
.
.
switch (evtType)
{
case GCEV_OFFERED:
/* received GC event, parse PARM_BLK, examine extension data */
parmblkp = (GC_PARM_BLK *) metaEvent.extevtdatap;
while (t_gcParmDatap = gc_util_next_parm(parmblkp, t_gcParmDatap))
{
switch(t_gcParmDatap->set_ID)
{
case IPSET_MIME:
switch(t_gcParmDatap->parm_ID)
{
case IPPARM_MIME_PART:
/* Get MIME part pointer */
parmblkp2= (GC_PARM_BLK*)(*(UINT32*)( t_gcParmDatap ->value_buf));
if(NULL == parmblkp2 || 0 != getMIMEPart(parmblkp2))
{
printf("\n!!!error getting MIME part!!!\n");
return -1;
}
break;
}
break;
}
}
}
:
}
INT32 getMIMEPart(GC_PARM_BLK* parmblkp)
{
GC_PARM_DATA_EXT ParmDataExt;
//Initialize the structure to start from the 1st parm in the GC_PARM_BLK
INIT_GC_PARM_DATA_EXT(&ParmDataExt);
UINT32 bodySize = 0;
char *appBuff = NULL;
char *bodyBuff = NULL;
/* get the first param data*/
if(GC_SUCCESS != gc_util_next_parm_ex(parmblkp, &ParmDataExt))
{
/* error condition */
printf("\n !!! unable to get parm data ext !!!\n");
return -1;
}