コード例 #1
0
ファイル: TTClient.cpp プロジェクト: xiaoyu-real/Test
	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;
	}
コード例 #2
0
ファイル: chfile.cpp プロジェクト: Azarien/open-watcom-v2
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;
}
コード例 #3
0
ファイル: chfile.cpp プロジェクト: Azarien/open-watcom-v2
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;
}
コード例 #4
0
ファイル: chfile.cpp プロジェクト: Azarien/open-watcom-v2
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;
}
コード例 #5
0
ファイル: chfile.cpp プロジェクト: Azarien/open-watcom-v2
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;
}
コード例 #6
0
ファイル: isoreader.c プロジェクト: 173210/kirk_engine
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;
}