资源简介
这是即时通讯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个文件信息
相关资源
- CvvImage.zip类文件
- 猎豹网校C++ Primer初中高全套无密版
- C++ Primer Plus 6th Edition source code files
- C++primer第五版习题答案及解析
- 数字水印源代码,C语言程序
- c++基础封装线程、锁、定时器、原子
- c++11多线程编程
- c++11互斥库mutex的使用
- c++11原子库
- c++11 bind库使用
- 文本编辑器C++代码
- C++ NORAD SGP4/SDP4 Implementation
- C++ Primer 5th 习题集 源代码
- C++ primer plus 第六版 全部编程练习答案
- 02_C++PrimerPlus_中文版_第6版_超清.txt
- QTP 运行报:Microslft Visual C++ Runtime Lib
- C++ Prime中文版第五版
- C++ Primer Plus第6版 源代码+练习答案
- CvImgCtrl 演示程序
- C++ Primer Plus第6版_中英文版两个_带书
- C++ Primer第五版中文版--带书签
- C++ Primer Plus(第6版).pdf 中文版高清
- C++ Primer Plus第6版_带书签_高清完整版
- 通过 S-Function 集成 C 代码进行仿真
- VegaPrime_MFC
- C++ Primer Plus 6th书本源代码
- C语言实现Optimal、FIFO、LRU页面置换算
- C++ Primer Plus第6版_中文版_带书签_超清
- Vimba CPP Manual中文.docx
- C++ Prime Plus中文版第六版
评论
共有 条评论