string TTClient::get(string key){ LOG_DEBUG("TTClient::get => key=: "<<key); char* value = NULL; string ret; value = tcrdbget2(tcrdbPtr_, key.c_str()); if(value){ LOG_DEBUG("TTClient::tcrdbget2 ==> key: "<<key<<" return value : ["<<value<<"]"); ret = value; delete value; } else { LOG_DEBUG("TTClient::tcrdbget2 ==> key: "<<key<<" return null value "); int code = tcrdbecode(tcrdbPtr_); if(code != TTESUCCESS){ //网络异常,重试 LOG_ERROR("TTClient::tcrdbecode => key: "<<key<<" failure : recv error code: "<<code); reOpen(); ret = reGetFromTT(key); //重新获取 } else //从TT返回成功,不做任何处理 { LOG_DEBUG("TTClient::tcrdbecode ==> key: "<<key<<"return code == "<<code); } } return ret; }
int CheckedFile::fstat( struct stat * buf ) //----------------------------------------- { int retVal; if( !_isOpen ) { reOpen(); } retVal = ::fstat( _handle, buf ); if( retVal != 0 ) { FileExcept oops( FileExcept::Stat, errno, _fileName ); throw( oops ); } return retVal; }
void CheckedFile::write( const void * buffer, int len ) //----------------------------------------------------- { int numWritten; if( !_isOpen ) { reOpen(); } numWritten = ::write( _handle, (void *) buffer, len ); // cast away const if( numWritten != len ) { FileExcept oops( FileExcept::Write, errno, _fileName ); throw( oops ); } _currOffset += numWritten; }
int CheckedFile::read( void * buffer, int len ) //--------------------------------------------- { int numRead; if( !_isOpen ) { reOpen(); } numRead = ::read( _handle, buffer, len ); if( numRead == -1 ) { FileExcept oops( FileExcept::Read, errno, _fileName ); throw( oops ); } _currOffset += numRead; return numRead; }
long CheckedFile::seek( long offset, int whence ) //----------------------------------------------- { long newOff; if( !_isOpen ) { _currOffset = offset; reOpen(); } switch( whence ) { case SEEK_SET: if( offset > _currOffset ) { newOff = ::lseek( _handle, offset - _currOffset, SEEK_CUR ); } else { if( offset == _currOffset ) { return offset; // already at right position } else { newOff = ::lseek( _handle, offset, SEEK_SET ); } } break; case SEEK_CUR: case SEEK_END: newOff = ::lseek( _handle, offset, whence ); break; default: FileExcept oops( FileExcept::Seek, EINVAL, _fileName, BadWhenceMessage ); throw( oops ); } if( newOff == -1 ) { FileExcept oops( FileExcept::Seek, errno, _fileName ); throw( oops ); } _currOffset = newOff; return newOff; }
int isoOpen(const char *path) { int ret; if (g_isofp != NULL) { isoClose(); } g_filename = path; if (reOpen() == NULL) { printf("%s: open failed %s\n", __func__, g_filename); ret = -2; goto error; } fseek(g_isofp, 0, SEEK_SET); memset(&g_ciso_h, 0, sizeof(g_ciso_h)); ret = fread(&g_ciso_h, sizeof(g_ciso_h), 1, g_isofp); if (ret != 1) { ret = -9; goto error; } if (*(u32*)g_ciso_h.magic == 0x4F534943 && g_ciso_h.block_size == SECTOR_SIZE) { g_is_compressed = 1; } else { g_is_compressed = 0; } if (g_is_compressed) { g_total_sectors = g_ciso_h.total_bytes / g_ciso_h.block_size; g_CISO_cur_idx = -1; if (g_ciso_dec_buf == NULL) { g_ciso_dec_buf = malloc(CISO_DEC_BUFFER_SIZE); if (g_ciso_dec_buf == NULL) { printf("malloc -> 0x%08x\n", (u32)g_ciso_dec_buf); ret = -6; goto error; } } memset(g_CISO_idx_cache, 0, sizeof(g_CISO_idx_cache)); g_ciso_dec_buf_offset = -1; g_CISO_cur_idx = -1; } else { g_total_sectors = isoGetSize(); } ret = readSector(16, g_sector_buffer); if (ret < 0) { ret = -7; goto error; } if (memcmp(&g_sector_buffer[1], ISO_STANDARD_ID, sizeof(ISO_STANDARD_ID)-1)) { printf("%s: vol descriptor not found\n", __func__); ret = -10; goto error; } memcpy(&g_root_record, &g_sector_buffer[0x9C], sizeof(g_root_record)); return 0; error: if (g_isofp >= 0) { isoClose(); } return ret; }