• 大小: 145KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: IM  C++11  

资源简介

这是即时通讯flamingo服务器端代码,目前即时通讯软件实现了如下功能: 注册 登录 查找好友、查找群 添加好友、添加群 好友列表、群列表、最近会话 单人聊天功能(包括发文字、表情、窗口抖动、离线文件) 群聊功能(包括发文字、表情) 修改密码 修改个人信息(自定义昵称、签名、个性头像等个人信息) 自动升级功能 包括聊天服务器和文件服务器,同时也是一款通用的C++11网络框架。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “asynclogging.h“
#include “logfile.h“
#include “timestamp.h“

const char digits[] = “9876543210123456789“;
const char* zero = digits + 9;
static_assert(sizeof(digits) == 20 “digitshex failed“);

const char digitsHex[] = “0123456789ABCDEF“;
static_assert(sizeof(digitsHex) == 17 “digitshex failed“);

// Efficient Integer to String Conversions by Matthew Wilson.
template
size_t convert(char buf[] T value)
{
T i = value;
char* p = buf;

do
{
int lsd = static_cast(i % 10);
i /= 10;
*p++ = zero[lsd];
} while (i != 0);

if (value < 0)
{
*p++ = ‘-‘;
}
*p = ‘\0‘;
std::reverse(buf p);

return p - buf;
}

size_t convertHex(char buf[] uintptr_t value)
{
uintptr_t i = value;
char* p = buf;

do
{
int lsd = static_cast(i % 16);
i /= 16;
*p++ = digitsHex[lsd];
} while (i != 0);

*p = ‘\0‘;
std::reverse(buf p);

return p - buf;
}

template class FixedBuffer;
template class FixedBuffer;


template
const char* FixedBuffer::debugString()
{
*cur_ = ‘\0‘;
return data_;
}

template
void FixedBuffer::cookieStart()
{
}

template
void FixedBuffer::cookieEnd()
{
}

AsyncLogging::AsyncLogging(const string& basename
   size_t rollSize
   int flushInterval)
   : flushInterval_(flushInterval)
   running_(false)
   basename_(basename)
   rollSize_(rollSize)    
   latch_(1)
   currentBuffer_(new Buffer)
   nextBuffer_(new Buffer)
   buffers_()
{
currentBuffer_->bzero();
nextBuffer_->bzero();
buffers_.reserve(16);
}

void AsyncLogging::append(const char* logline int len)
{
std::unique_lock lock(mutex_);
if (currentBuffer_->avail() > len)
{
currentBuffer_->append(logline len);
}
else
{
buffers_.push_back(currentBuffer_);

if (nextBuffer_)
{
currentBuffer_ = std::move(nextBuffer_);
}
else
{
currentBuffer_.reset(new Buffer); // Rarely happens
}
currentBuffer_->append(logline len);
cond_.notify_all();
}
}

void AsyncLogging::threadFunc()
{
assert(running_ == true);
latch_.countDown();
LogFile output(basename_ rollSize_ false);
BufferPtr newBuffer1(new Buffer);
BufferPtr newBuffer2(new Buffer);
newBuffer1->bzero();
newBuffer2->bzero();
BufferVector buffersToWrite;
buffersToWrite.reserve(16);
while (running_)
{
assert(newBuffer1 && newBuffer1->length() == 0);
assert(newBuffer2 && newBuffer2->length() == 0);
assert(buffersToWrite.empty());

{
std::unique_lock lock(mutex_);
if (buffers_.empty())  // unusual usage!
{
cond_.wait_for(lock chrono::seconds(flushInterval_));
}
buffers_.push_back(currentBuffer_);
currentBuffer_ = std::move(newBuffer1);
buffersToWrite.swap

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-03-09 18:27  base\
     文件        4186  2016-06-22 17:08  base\asynclogging.cpp
     文件        2475  2016-06-22 17:08  base\asynclogging.h
     文件         496  2016-06-22 17:08  base\countdownlatch.cpp
     文件         323  2016-06-22 17:08  base\countdownlatch.h
     文件        3072  2016-06-22 17:08  base\fileutil.cpp
     文件        1365  2016-06-22 17:08  base\fileutil.h
     文件        2054  2016-06-22 17:08  base\logfile.cpp
     文件         875  2016-06-22 17:08  base\logfile.h
     文件        5059  2016-06-22 17:08  base\logging.cpp
     文件        3191  2017-03-09 18:27  base\logging.h
     文件        4228  2016-06-22 17:08  base\logstream.cpp
     文件        3115  2016-06-22 17:08  base\logstream.h
     文件         646  2017-03-09 17:43  base\singleton.h
     文件        2072  2016-06-22 17:08  base\timestamp.cpp
     文件        2771  2016-06-22 17:08  base\timestamp.h
     文件         358  2017-03-21 10:06  CentOS7关闭防火墙方法.txt
     目录           0  2017-03-29 17:10  chatserversrc\
     文件       39139  2017-03-29 17:10  chatserversrc\ClientSession.cpp
     文件        2636  2017-03-29 16:37  chatserversrc\ClientSession.h
     文件        3846  2017-03-23 17:29  chatserversrc\IMServer.cpp
     文件        1553  2017-03-23 17:30  chatserversrc\IMServer.h
     文件        2928  2017-03-17 11:16  chatserversrc\main.cpp
     文件        5974  2017-03-29 16:36  chatserversrc\Msg.h
     文件        2582  2017-03-29 10:33  chatserversrc\MsgCacheManager.cpp
     文件        1155  2017-03-29 09:07  chatserversrc\MsgCacheManager.h
     文件        1335  2017-03-16 12:32  chatserversrc\TcpSession.cpp
     文件         736  2017-03-15 09:14  chatserversrc\TcpSession.h
     文件       15356  2017-03-29 11:09  chatserversrc\UserManager.cpp
     文件        2714  2017-03-29 11:05  chatserversrc\UserManager.h
     文件        1947  2017-03-29 16:05  CMakeLists.txt
............此处省略87个文件信息

评论

共有 条评论