void buffered_string_benchmark(void){ //basic test to see if BufStringAdd is working at all, should print out <123456abcdefg> BufString *a = BufStringNewSize(10/*initial size*/); BufStringAdd(a, "123456"); BufStringAdd(a, "abcdefg"); DEBUG("Test <%s>\n", a->bs_Buffer); for (unsigned int i = 0; i < 25; i++){ struct timeval start_time, end_time; gettimeofday(&start_time, NULL); BufString *b = BufStringNewSize(10/*initial size*/); for (unsigned int j = 0; j < 100000000; j++){ BufStringAdd(b, "123456790"); } // DEBUG("Total buffer size %d", b->bs_Size); gettimeofday(&end_time, NULL); struct timeval duration; timeval_subtract(&duration, &end_time, &start_time); DEBUG("Iteration %d execution time %ld.%04lds\n", i, duration.tv_sec, duration.tv_usec/1000); BufStringDelete(b); } exit(1); }
void AppSessionThread( void *args ) { struct FThread *ft = (FThread *)args; AppSession *as = (AppSession *)ft->t_Data; struct timeval timeout; fd_set fds; while( ft->t_Quit != TRUE ) { FD_ZERO( &fds ); FD_SET( as->as_WritePipe, &fds ); timeout.tv_sec = 5000; timeout.tv_usec = 0; int err = select( as->as_WritePipe+1, &fds, NULL, NULL, &timeout ); if( err < 0 ) { FERROR("Problem\n"); } else if( err == 0 ) { DEBUG("Timeout\n"); } else { #define BUFFER_SIZE 2048 char buffer[ BUFFER_SIZE ]; BufString *bs = BufStringNew(); int size = -1; while( size != 0 )//!feof( (FILE *) as->as_WritePipe ) ) { // Make a new buffer and read size = read( as->as_WritePipe, buffer, BUFFER_SIZE ); //int size = fread( buffer, sizeof(char), BUFFER_SIZE, (FILE *)as->as_WritePipe ); BufStringAddSize( bs, buffer, size ); } BufStringDelete( bs ); } } ft->t_Launched = FALSE; }
Image *ImageRead( struct ImageLibrary *im, File *rootDev, const char *path ) { Image *img = NULL; FHandler *fh = rootDev->f_FSys; File *rfp = (File *)fh->FileOpen( rootDev, path, "rb" ); if( rfp != NULL ) { BufString *bs = BufStringNew( ); char buffer[ 20048 ]; int len = 0; while( ( len = fh->FileRead( rfp, buffer, 20048 ) ) > 0 ) { BufStringAddSize( bs, buffer, len ); } ExceptionInfo *ei=AcquireExceptionInfo(); ImageInfo *ii=CloneImageInfo((ImageInfo *) NULL); img = BlobToImage( ii, bs->bs_Buffer, bs->bs_Size, ei ); if( img == NULL ) { ERROR("Cannot convert file data to image\n"); } DestroyExceptionInfo( ei ); DestroyImageInfo( ii ); BufStringDelete( bs ); fh->FileClose( rootDev, rfp ); } else { ERROR("Cannot open file: %s to read\n", path ); } }
BufString *GetJSONFromStructure( ULONG *descr, void *data ) { BufString *bs = BufStringNew(); if( bs == NULL ) { ERROR("ERROR: bufstring is null\n"); return NULL; } DEBUG("[GetJSONFromStructure] \n"); if( descr == NULL || data == NULL ) { BufStringDelete( bs ); ERROR("Data structure or description was not provided!\n"); return 0; } if( descr[ 0 ] != SQLT_TABNAME ) { BufStringDelete( bs ); ERROR("SQLT_TABNAME was not provided!\n"); return 0; } DEBUG("JSONParse\n"); ULONG *dptr = &descr[ SQL_DATA_STRUCT_START ]; // first 2 entries inform about table, rest information provided is about columns unsigned char *strptr = (unsigned char *)data; // pointer to structure to which will will insert data int opt = 0; BufStringAdd( bs, "{" ); while( dptr[0] != SQLT_END ) { //DEBUG("Found on pos %d tag %d row %s\n", i, dptr[ 0 ], row[ i ] ); switch( dptr[ 0 ] ) { case SQLT_IDINT: // primary key case SQLT_INT: { char tmp[ 256 ]; int tmpint; memcpy( &tmpint, strptr + dptr[2], sizeof( int ) ); if( opt == 0 ) { sprintf( tmp, "\"%s\": %d ", (char *)dptr[ 1 ], tmpint ); BufStringAdd( bs, tmp ); } else { sprintf( tmp, ", \"%s\": %d ", (char *)dptr[ 1 ], tmpint ); BufStringAdd( bs, tmp ); } opt++; } break; case SQLT_STR: { char tmp[ 512 ]; char *tmpchar; memcpy( &tmpchar, strptr+dptr[2], sizeof( char *) ); if( tmpchar != NULL ) { if( opt == 0 ) { sprintf( tmp, "\"%s\": \"%s\" ", (char *)dptr[ 1 ], tmpchar ); BufStringAdd( bs, tmp ); } else { sprintf( tmp, ", \"%s\": \"%s\" ", (char *)dptr[ 1 ], tmpchar ); BufStringAdd( bs, tmp ); } } opt++; } break; case SQLT_TIMESTAMP: { // '2015-08-10 16:28:31' char date[ 512 ]; struct tm *tp = (struct tm *)( strptr+dptr[2]); if( opt == 0 ) { sprintf( date, "\"%s\": \"%4d-%2d-%2d %2d:%2d:%2d\" ", (char *)dptr[ 1 ], tp->tm_year, tp->tm_mon, tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec ); BufStringAdd( bs, date ); } else { sprintf( date, ", \"%s\": \"%4d-%2d-%2d %2d:%2d:%2d\" ", (char *)dptr[ 1 ], tp->tm_year, tp->tm_mon, tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec ); BufStringAdd( bs, date ); } opt++; } break; } dptr += 3; } BufStringAdd( bs, "}" ); //DEBUG("Object to JSON parse end %s\n", bs->bs_Buffer ); return bs; }
gdImagePtr ImageRead( struct ImageLibrary *im, File *rootDev, const char *path ) { gdImagePtr img = NULL; FHandler *fh = rootDev->f_FSys; File *rfp = (File *)fh->FileOpen( rootDev, path, "rb" ); if( rfp != NULL ) { BufString *bs = BufStringNew( ); char buffer[ 20048 ]; int len = 0; while( ( len = fh->FileRead( rfp, buffer, 20048 ) ) > 0 ) { BufStringAddSize( bs, buffer, len ); } img = gdImageCreateFromJpegPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; if( img == NULL ) { if( img == NULL ) { img = gdImageCreateFromBmpPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; if( img == NULL ) { img = gdImageCreateFromGifPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; if( img == NULL ) { img = gdImageCreateFromPngPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; if( img == NULL ) { img = gdImageCreateFromTgaPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; if( img == NULL ) { img = gdImageCreateFromTiffPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; if( img == NULL ) { img = gdImageCreateFromWBMPPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; if( img == NULL ) { img = gdImageCreateFromWebpPtr( bs->bs_Size, (void *)bs->bs_Buffer ) ; } } } } } } } } if( img == NULL ) { ERROR("Graphics format not recognized\n"); } BufStringDelete( bs ); fh->FileClose( rootDev, rfp ); } else { ERROR("Cannot open file: %s to read\n", path ); } return img; }