diff --git a/common/alloter/pool_block.cpp b/common/alloter/pool_block.cpp index cd911d5..f55d2b4 100644 --- a/common/alloter/pool_block.cpp +++ b/common/alloter/pool_block.cpp @@ -18,7 +18,7 @@ BlockMemoryPool::BlockMemoryPool(uint32_t large_sz, uint32_t add_num) : BlockMemoryPool::~BlockMemoryPool() { // free all memory - for (auto iter = _all_mem_vec.begin(); iter != _all_mem_vec.end(); ++iter) { + for (auto iter = _free_mem_vec.begin(); iter != _free_mem_vec.end(); ++iter) { free(*iter); } } @@ -35,6 +35,7 @@ void* BlockMemoryPool::PoolLargeMalloc() { void BlockMemoryPool::PoolLargeFree(void* &m) { _free_mem_vec.push_back(m); + // TODO release some block. } uint32_t BlockMemoryPool::GetSize() { @@ -51,10 +52,6 @@ void BlockMemoryPool::ReleaseHalf() { for (auto iter = _free_mem_vec.begin(); iter != _free_mem_vec.end();) { void* mem = *iter; - auto all_iter = std::find(_all_mem_vec.begin(), _all_mem_vec.end(), mem); - if (all_iter != _all_mem_vec.end()) { - _all_mem_vec.erase(all_iter); - } iter = _free_mem_vec.erase(iter); free(mem); @@ -74,7 +71,6 @@ void BlockMemoryPool::Expansion(uint32_t num) { void* mem = malloc(_large_size); // not memset! _free_mem_vec.push_back(mem); - _all_mem_vec.push_back(mem); } } diff --git a/common/alloter/pool_block.h b/common/alloter/pool_block.h index 7bac08e..7b3807f 100644 --- a/common/alloter/pool_block.h +++ b/common/alloter/pool_block.h @@ -38,7 +38,6 @@ private: uint32_t _number_large_add_nodes; //every time add nodes num uint32_t _large_size; //bulk memory size std::vector _free_mem_vec; //free bulk memory list - std::vector _all_mem_vec; }; std::shared_ptr MakeBlockMemoryPoolPtr(uint32_t large_sz, uint32_t add_num); diff --git a/common/buffer/buffer_block.cpp b/common/buffer/buffer_block.cpp index c652450..9114014 100644 --- a/common/buffer/buffer_block.cpp +++ b/common/buffer/buffer_block.cpp @@ -10,8 +10,8 @@ namespace cppnet { BufferBlock::BufferBlock(std::shared_ptr& alloter) : - _alloter(alloter), - _can_read(false) { + _can_read(false), + _alloter(alloter) { _buffer_start = (char*)alloter->PoolLargeMalloc(); _total_size = alloter->GetBlockLength(); @@ -141,7 +141,7 @@ int32_t BufferBlock::MoveReadPt(int32_t len) { if (_read < _write) { size_t size = _write - _read; // res can load all - if (size <= len) { + if ((int32_t)size <= len) { _read = _write; _can_read = false; return (int32_t)size; @@ -162,14 +162,14 @@ int32_t BufferBlock::MoveReadPt(int32_t len) { size_t size_end = _buffer_end - _read; size_t size = size_start + size_end; // res can load all - if (size <= len) { + if ((int32_t)size <= len) { _read = _write; _can_read = false; return (int32_t)size; // only read len } else { - if (len <= size_end) { + if (len <= (int32_t)size_end) { _read += len; return len; @@ -187,7 +187,7 @@ int32_t BufferBlock::MoveReadPt(int32_t len) { if (_write < _read) { size_t size = _read - _write; // reread all buffer - if (size <= len) { + if ((int32_t)size <= len) { _read = _write; _can_read = true; return (int32_t)size; @@ -208,14 +208,14 @@ int32_t BufferBlock::MoveReadPt(int32_t len) { size_t size_end = _buffer_end - _write; size_t size = size_start + size_end; // reread all buffer - if (size <= len) { + if ((int32_t)size <= len) { _read = _write; _can_read = true; return (int32_t)size; // only reread part of buffer } else { - if (len <= size_start) { + if (len <= (int32_t)size_start) { _read -= len; return len; @@ -239,7 +239,7 @@ int32_t BufferBlock::MoveWritePt(int32_t len) { if (_write < _read) { size_t size = _read - _write; // all buffer will be used - if (size <= len) { + if ((int32_t)size <= len) { _write = _read; _can_read = true; return (int32_t)size; @@ -261,14 +261,14 @@ int32_t BufferBlock::MoveWritePt(int32_t len) { size_t size = size_start + size_end; // all buffer will be used - if (size <= len) { + if ((int32_t)size <= len) { _write = _read; _can_read = true; return (int32_t)size; // part of buffer will be used } else { - if (len <= size_end) { + if (len <= (int32_t)size_end) { _write += len; return len; @@ -286,7 +286,7 @@ int32_t BufferBlock::MoveWritePt(int32_t len) { if (_read < _write) { size_t size = _write - _read; // rewrite all buffer - if (size <= len) { + if ((int32_t)size <= len) { _write = _read; _can_read = false; return (int32_t)size; @@ -307,14 +307,14 @@ int32_t BufferBlock::MoveWritePt(int32_t len) { size_t size_end = _buffer_end - _read; size_t size = size_start + size_end; // rewrite all buffer - if (size <= len) { + if ((int32_t)size <= len) { _write = _read; _can_read = false; return (int32_t)size; // only rewrite part of buffer } else { - if (len <= size_start) { + if (len <= (int32_t)size_start) { _write -= len; return len; diff --git a/common/log/file_logger.h b/common/log/file_logger.h index 61d7d9c..e447426 100644 --- a/common/log/file_logger.h +++ b/common/log/file_logger.h @@ -24,7 +24,7 @@ enum FileLoggerSpiltUnit { class FileLogger: public Logger, public ThreadWithQueue> { public: - FileLogger(const std::string& file = "cppnet", + FileLogger(const std::string& file, FileLoggerSpiltUnit unit = FLSU_DAY, uint16_t max_store_days = 3, uint16_t time_offset = 5); diff --git a/common/log/log_stream.cpp b/common/log/log_stream.cpp index 03de0b8..86d5d77 100644 --- a/common/log/log_stream.cpp +++ b/common/log/log_stream.cpp @@ -75,15 +75,21 @@ LogStream& LogStream::operator<<(uint32_t v) { LogStream& LogStream::operator<<(int64_t v) { CHECK_CONTINUE() - +#ifdef __win__ _log->_len += snprintf(_log->_log + _log->_len, __log_block_size - _log->_len, "%I64d", v); +#else + _log->_len += snprintf(_log->_log + _log->_len, __log_block_size - _log->_len, "%ld", v); +#endif return *this; } LogStream& LogStream::operator<<(uint64_t v) { CHECK_CONTINUE() - +#ifdef __win__ _log->_len += snprintf(_log->_log + _log->_len, __log_block_size - _log->_len, "%I64u", v); +#else + _log->_len += snprintf(_log->_log + _log->_len, __log_block_size - _log->_len, "%lu", v); +#endif return *this; } diff --git a/common/network/address.cpp b/common/network/address.cpp index 3e09044..55f625a 100644 --- a/common/network/address.cpp +++ b/common/network/address.cpp @@ -49,10 +49,10 @@ void Address::SetIp(const std::string& ip) { const std::string Address::AsString() { if (_address_type == AT_IPV6) { - return std::move("[" + _ip + "]:" + std::to_string(_port)); + return "[" + _ip + "]:" + std::to_string(_port); } else { - return std::move(_ip + ":" + std::to_string(_port)); + return _ip + ":" + std::to_string(_port); } } @@ -81,7 +81,7 @@ std::string Address::ToIpv6(const std::string& ip) { std::string ret("::FFFF:"); ret.append(ip); - return std::move(ret); + return ret; } std::string Address::ToIpv4(const std::string& ip) { diff --git a/common/structure/thread_safe_block_queue.h b/common/structure/thread_safe_block_queue.h index 291a4ce..f3419f8 100644 --- a/common/structure/thread_safe_block_queue.h +++ b/common/structure/thread_safe_block_queue.h @@ -31,7 +31,7 @@ public: auto ret = std::move(_queue.front()); _queue.pop(); - return std::move(ret); + return ret; } void Clear() { diff --git a/cppnet/cppnet.cpp b/cppnet/cppnet.cpp index d955957..16f80ba 100644 --- a/cppnet/cppnet.cpp +++ b/cppnet/cppnet.cpp @@ -25,7 +25,7 @@ CppNet::~CppNet() { void CppNet::Init(int32_t thread_num) { _cppnet_base->Init(thread_num); if (__open_log) { - std::shared_ptr file_log = std::make_shared(); + std::shared_ptr file_log = std::make_shared(__log_file_name); std::shared_ptr std_log = std::make_shared(); file_log->SetLogger(std_log); LOG_SET(file_log); diff --git a/cppnet/cppnet_config.h b/cppnet/cppnet_config.h index 3e5bc40..14f7102 100644 --- a/cppnet/cppnet_config.h +++ b/cppnet/cppnet_config.h @@ -6,6 +6,7 @@ #ifndef CPPNET_CPPNET_CONFIGE #define CPPNET_CPPNET_CONFIGE +#include #include namespace cppnet { @@ -33,7 +34,7 @@ static const uint16_t __addr_str_len = 16; // log level. static const uint16_t __log_level = 15; // info level // log file name. -static const char* __log_file_name = "cppnet_log"; +static const std::string __log_file_name = "cppnet_log"; // open log print. static const bool __open_log = false; diff --git a/cppnet/event/linux/epoll_action.cpp b/cppnet/event/linux/epoll_action.cpp index 583723f..0a8b8cf 100644 --- a/cppnet/event/linux/epoll_action.cpp +++ b/cppnet/event/linux/epoll_action.cpp @@ -247,7 +247,7 @@ void EpollEventActions::OnEvent(std::vector& event_vec, int16_t num std::shared_ptr event; for (int i = 0; i < num; i++) { - if (event_vec[i].data.fd == _pipe[0]) { + if ((uint32_t)event_vec[i].data.fd == _pipe[0]) { LOG_WARN("weak up the io thread, index : %d", i); char buf[4]; read(_pipe[0], buf, 1); diff --git a/cppnet/socket/connect_socket.cpp b/cppnet/socket/connect_socket.cpp index 0591ebd..182941e 100644 --- a/cppnet/socket/connect_socket.cpp +++ b/cppnet/socket/connect_socket.cpp @@ -27,7 +27,10 @@ ConnectSocket::ConnectSocket() { } ConnectSocket::~ConnectSocket() { - + if (_sock > 0) { + __all_socket_map.erase(_sock); + OsHandle::Close(_sock); + } } bool ConnectSocket::Bind(const std::string& ip, uint16_t port) { diff --git a/cppnet/socket/posix/posix_connect_socket.cpp b/cppnet/socket/posix/posix_connect_socket.cpp index 07873c0..b3e27d9 100644 --- a/cppnet/socket/posix/posix_connect_socket.cpp +++ b/cppnet/socket/posix/posix_connect_socket.cpp @@ -61,12 +61,13 @@ void PosixConnectSocket::OnAccept() { sock->SetDispatcher(GetDispatcher()); __all_socket_map[ret._return_value] = sock; - + LOG_DEBUG_S << "connect nums:" << __all_socket_map.size() << " sock:" << ret._return_value << " used:" << sock.use_count(); //call accept call back function cppnet_base->OnAccept(sock); //start read sock->Read(); + sock.reset(); } } diff --git a/cppnet/socket/posix/posix_rw_socket.cpp b/cppnet/socket/posix/posix_rw_socket.cpp index 6d4a4ad..589ca0d 100644 --- a/cppnet/socket/posix/posix_rw_socket.cpp +++ b/cppnet/socket/posix/posix_rw_socket.cpp @@ -114,7 +114,7 @@ bool PosixRWSocket::Recv(uint32_t len) { _read_buffer->MoveWritePt(ret._return_value); off_set += ret._return_value; // read all - if (ret._return_value < buff_len) { + if ((uint32_t)ret._return_value < buff_len) { break; } need_expend = true; @@ -133,7 +133,7 @@ bool PosixRWSocket::Send() { uint32_t off_set = 0; while(_write_buffer && _write_buffer->GetCanReadLength() > 0) { std::vector io_vec; - uint32_t data_len = _write_buffer->GetUseMemoryBlock(io_vec, __linux_write_buff_get); + _write_buffer->GetUseMemoryBlock(io_vec, __linux_write_buff_get); auto ret = OsHandle::Writev(_sock, &*io_vec.begin(), io_vec.size()); if (ret._return_value >= 0) { _write_buffer->MoveReadPt(ret._return_value);