資源簡介
這是即時通訊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個文件信息
評論
共有 條評論