int writeBuffer(TBuffer *buffer, char *data, int size) { if(size>resOfBuffer(buffer)) size=resOfBuffer(buffer); memcpy(buffer->bufPtr, data, size); buffer->bufPtr+=size; return size; }
static int post_buf_to_svr(int max_left_len,trans_info_t*info,char *file) { int sendcount=0; char url[1024]; char *table_name = info->list->table_name; int ret = 0; static int fp_count = 0; /*服务器查询时上传数据,时间戳设为为0*/ if (info->upload_mode == UPLOADE_MODE_NOR) { snprintf(url, sizeof(url),"%s%u", info->url, (size_t)(info->cur_trans_log_time)); } else { sprintf(url, "%s%u", info->url,(size_t)(info->starting_time)); } if (strncasecmp(table_name, "fingertmp", strlen("fingertmp")+1) == 0) { fp_count++; } if (strlen(file) > 0) { info->file_path = file; if (cache_data_to_svr(url, info)) { info->file_path = NULL; ret = 1; } else { ret = -2; } } else if ((resOfBuffer(info->cache) < max_left_len) || \ (info->count >= info->opt->trans_max_rec)|| \ (fp_count > 2)||\ (strncasecmp(table_name, "USERPIC", strlen("USERPIC")) == 0)) { if (cache_data_to_svr(url, info)) { ret = 1; if ( info->opt->trans_max_rec < 140) { info->opt->trans_max_rec += 10; } } else { ret = -1; if ( info->opt->trans_max_rec > 30) { info->opt->trans_max_rec -= 30; } } } if (ret == 1) { if ((info->list->auto_push_flag) && \ (info->upload_mode == UPLOADE_MODE_NOR)) { info->list->last_stamp = info->cur_trans_log_time; } fp_count = 0; sendcount = info->count; info->count = 0; clearBuffer(info->cache); memset(info->cache->buffer,0,info->cache->bufferSize); return sendcount; } else if (ret < 0){ info->error = -1; } return ret; }
int writeBufferAuto(TBuffer *buffer, char *data, int size) { int len=size-resOfBuffer(buffer); if(len>0) { if(len<10*1024) len=10*1024; len+=buffer->bufferSize; if(resizeRamBuffer(buffer, len)!=len) return 0; } memcpy(buffer->bufPtr, data, size); buffer->bufPtr+=size; return size; }
int insertBufferAuto(TBuffer *buffer, char *data, int size, int offset) { unsigned char *p; int i,len=size-resOfBuffer(buffer); if(len>0) { if(len<10*1024) len=10*1024; len+=buffer->bufferSize; if(resizeRamBuffer(buffer, len)!=len) return 0; } p=buffer->bufPtr+size-1; for(i=buffer->bufPtr-buffer->buffer-offset;i>0;i--){ *p=*(p-size); p--;} memcpy(buffer->buffer+offset, data, size); buffer->bufPtr+=size; return size; }