Пример #1
0
bool CSqlLogger::write_log(const std::string& sql)
{
    try
    {
        int32_t length = static_cast<int32_t>(sql.size());
        sys::LockHelper<sys::CLock> lock_helper(_lock);

        if ((-1 == _log_fd) || need_rotate())
        {
            rotate_log();
        }
        if (-1 == _log_fd)
        {
            return false;
        }

        struct iovec iov[2];
        iov[0].iov_base = &length;
        iov[0].iov_len = sizeof(length);
        iov[1].iov_base = const_cast<char*>(sql.data());
        iov[1].iov_len = sql.size();
        ssize_t bytes_written = writev(_log_fd, iov, sizeof(iov)/sizeof(iov[0]));
        if (bytes_written != static_cast<int>(iov[0].iov_len+iov[1].iov_len))
        {
            const int errcode = errno;
            THROW_SYSCALL_EXCEPTION(utils::CStringUtils::format_string("writev %s error: %s", _log_filepath.c_str(), sys::Error::to_string(errcode).c_str()), errcode, "writev");
        }

        // 计数
        ++_total_lines;

        const int32_t lines = argument::lines->value();
        if ((lines > 0) && (++_num_lines >= lines))
        {
            _num_lines = 0;
            if (-1 == fdatasync(_log_fd))
            {
                const int errcode = errno;
                THROW_SYSCALL_EXCEPTION(utils::CStringUtils::format_string("fdatasync %s error: %s", _log_filepath.c_str(), sys::Error::to_string(errcode).c_str()), errno, "fdatasync");
            }
        }

        return true;
    }
    catch (sys::CSyscallException& ex)
    {
        MYLOG_ERROR("[%s] write [%s] to [%s] failed: %s\n", _dbinfo->str().c_str(), sql.c_str(), _log_filepath.c_str(), ex.str().c_str());
        return false;
    }
}
Пример #2
0
bool CThreadMemPool::reclaim(void* bucket) throw (CSyscallException)
{
    LockHelper<CLock> lock_helper(_lock);
    return _raw_mem_pool.reclaim(bucket);
}
Пример #3
0
void* CThreadMemPool::allocate() throw (CSyscallException)
{
    LockHelper<CLock> lock_helper(_lock);
    return _raw_mem_pool.allocate();
}
Пример #4
0
void CThreadMemPool::create(uint16_t bucket_size, uint32_t bucket_number, bool use_heap, uint8_t guard_size, char guard_flag) throw (CSyscallException)
{
    LockHelper<CLock> lock_helper(_lock);
    _raw_mem_pool.create(bucket_size, bucket_number, use_heap, guard_size, guard_flag);
}
Пример #5
0
void CThreadMemPool::destroy() throw (CSyscallException)
{
    LockHelper<CLock> lock_helper(_lock);
    _raw_mem_pool.destroy();
}
Пример #6
0
P1 (PUBLIC pascal trap, OSErr, FSpRstFLock,
    FSSpecPtr, spec)
{
    return lock_helper (spec, PBHRstFLock);
}
Пример #7
0
bool CThreadMemPool::reclaim(void* bucket)
{
    LockHelper<CLock> lock_helper(_lock);
    return _raw_mem_pool.reclaim(bucket);
}
Пример #8
0
void* CThreadMemPool::allocate()
{
    LockHelper<CLock> lock_helper(_lock);
    return _raw_mem_pool.allocate();
}
Пример #9
0
void CThreadMemPool::destroy()
{
    LockHelper<CLock> lock_helper(_lock);
    _raw_mem_pool.destroy();
}