资源简介
这是即时通讯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 ba
文件 4186 2016-06-22 17:08 ba
文件 2475 2016-06-22 17:08 ba
文件 496 2016-06-22 17:08 ba
文件 323 2016-06-22 17:08 ba
文件 3072 2016-06-22 17:08 ba
文件 1365 2016-06-22 17:08 ba
文件 2054 2016-06-22 17:08 ba
文件 875 2016-06-22 17:08 ba
文件 5059 2016-06-22 17:08 ba
文件 3191 2017-03-09 18:27 ba
文件 4228 2016-06-22 17:08 ba
文件 3115 2016-06-22 17:08 ba
文件 646 2017-03-09 17:43 ba
文件 2072 2016-06-22 17:08 ba
文件 2771 2016-06-22 17:08 ba
文件 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个文件信息
相关资源
- TIM呼吸灯
- libevent(timeout.cpp)
- 思维导图(C++ Primer Plus(第六版).
- C++_Primer_4th_习题答案
- C++ Primer by Stanley B. Lippman Josée La
- c++11语言基础
- C++ Primer mobi
- 水晶报表Crystal Reports运行环境CRRunti
- 经典书籍《C++ Primer Plus 第6版 》 中文
- C++ Primer习题集 第5版.高清版
- c++ Primer199380
- primerc++书店项目
- C++primer第四版清晰版电子书及全部答
- c++-primer-plus(第六版)-编程练习答案
- C++ Primer中文第五版.zip
- 《C++程序设计原理与实践》第二版英
- C++ Primer 第五版 中文版+英文版+习题集
- C++ primer 第三版习题答案
- vim配置文件及其插件大全配置好的I
- C++11新标准中文版
- C++ Primer习题集 第5版-Stanley B. Lippman
- C++ Primer 第五版 中文版+英文版 pdf
-
从Matlab_Simuli
nk模型到代码实现 - C++ Primer(5th)2017Edition 无水印pdf
- VC++2012版Prim算法最小生成树动态演示
- 数据结构 图的最小生成树 C++描述 使
- Effective Modern C++英文版及中文翻译
- 深入理解 C++11 :C++11 新特性解析与应
- C++ Primer 3rd 英文版
-
simuli
nk仿真模型到C语言的转化
评论
共有 条评论