74 lines
1.5 KiB
C++
74 lines
1.5 KiB
C++
#pragma once
|
|
#include "of_util.h"
|
|
#include <cstdint>
|
|
#include <functional>
|
|
#include <spdlog/sinks/rotating_file_sink.h>
|
|
#include <spdlog/sinks/stdout_color_sinks.h>
|
|
#include <spdlog/spdlog.h>
|
|
|
|
constexpr size_t g_BuffSize = 102400;
|
|
const size_t MAX_FRAME_SIZE = 10 * g_BuffSize;
|
|
enum FrameType : int16_t {
|
|
TYPE_DEFAULT = 0,
|
|
TYPE_GET_LIST,
|
|
TYPE_DOWN_LIST,
|
|
TYPE_UP_LIST,
|
|
TYPE_CANCEL_LIST,
|
|
TYPE_OPEN_FILE,
|
|
TYPE_TRANS_FILE,
|
|
TYPE_TRANS_DONE,
|
|
TYPE_INTERRUPT,
|
|
TYPE_NO_HIT_TASK,
|
|
TYPE_WAITTING,
|
|
TYPE_HEARTS,
|
|
TYPE_OFFLINE,
|
|
TYPE_JUDGE_ACTIVE,
|
|
TYPE_REQUEST_UPDATE_LIST,
|
|
TYPE_CONFIRM_UPDATE_LIST,
|
|
TYPE_UNCONFIRM_UPDATE_LIST,
|
|
TYPE_DONE_UPDATE_LIST,
|
|
TYPE_FAILED_UPDATE_LIST
|
|
};
|
|
|
|
using namespace ofen;
|
|
std::shared_ptr<spdlog::logger> get_logger(const std::string& mark, const std::string& log_file);
|
|
class CFrameBuffer
|
|
{
|
|
public:
|
|
CFrameBuffer();
|
|
~CFrameBuffer();
|
|
|
|
public:
|
|
std::string fid_{};
|
|
std::string tid_{};
|
|
|
|
public:
|
|
FrameType type_{};
|
|
char* data_{};
|
|
int len_{};
|
|
char mark_{};
|
|
};
|
|
|
|
using ExFun_t = std::function<void(CFrameBuffer* buf)>;
|
|
/*
|
|
【 transm TCP 数据协议 】
|
|
header 2 char: 0xFF 0xFE
|
|
type 2 char:
|
|
mark 1 char:
|
|
from 32 char:
|
|
to 32 char:
|
|
len 4 char:
|
|
data xxxxx:
|
|
tail 2 char: 0xFF 0xFF
|
|
*/
|
|
class CTransProtocal
|
|
{
|
|
public:
|
|
CTransProtocal();
|
|
~CTransProtocal();
|
|
|
|
public:
|
|
static CFrameBuffer* parse(CMutBuffer& buffer);
|
|
static bool pack(CFrameBuffer* buf, char** out_buf, int& len);
|
|
};
|