transm/util/util.h

72 lines
1.3 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>
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_READY_TRANS,
TYPE_INTERRUPT,
TYPE_NO_HIT_TASK,
TYPE_WAITTING
};
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_{};
};
class SimpleBuffer
{
public:
SimpleBuffer() = default;
~SimpleBuffer();
public:
std::string id_;
char* data_{};
int len_{};
};
using ExFun_t = std::function<void(CFrameBuffer* buf)>;
/*
【 transm TCP 数据协议 】
header 2 char: 0xFF 0xFE
type 2 char:
mark 1 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);
};