61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
|
|
#pragma once
|
|
/**
|
|
* @file proxy_py.h
|
|
* @brief c++与python 交互数据结构
|
|
* @author your name (you@domain.com)
|
|
* @version 0.1
|
|
* @date 2025-10-15
|
|
*
|
|
* Copyright: Baosight Co. Ltd.
|
|
* DO NOT COPY/USE WITHOUT PERMISSION
|
|
*
|
|
*/
|
|
#include "mix_cc/json.h"
|
|
#include <array>
|
|
#include <glob/ProxyMag.h>
|
|
#include <log4cplus/LOG.h>
|
|
#include <map>
|
|
#include <memory>
|
|
#include <zlib/MemMap.hpp>
|
|
|
|
struct ProxPyMapConfig {
|
|
static inline constexpr char TableName[] = "ZONE20"; ///<表名
|
|
static constexpr int MapMaxSize =
|
|
499; ///< map 最大容量 sizof 8000000 499*16008=7987992
|
|
static constexpr int dataMaxLen = 2000;
|
|
};
|
|
|
|
class ProxPy {
|
|
private:
|
|
/**
|
|
* @brief 共享内存 数据结构 sizeof 16008
|
|
*/
|
|
struct GlithData {
|
|
double data[ProxPyMapConfig::dataMaxLen];
|
|
int data_szie = 0;
|
|
int flag = 0;
|
|
void update(std::array<double, ProxPyMapConfig::dataMaxLen> datax,
|
|
int dataSize) {
|
|
std::copy(datax.begin(), datax.end(), std::begin(data));
|
|
data_szie = dataSize;
|
|
flag = data_szie - 2;
|
|
}
|
|
};
|
|
|
|
private:
|
|
std::map<std::string, MessageICEPrx> prox_py_ptrs_;
|
|
std::unique_ptr<LOG> logger_;
|
|
std::unique_ptr<CMemMap<std::string, GlithData>> ruleid_CMemMap_;
|
|
const int CMemMapMaxSize = ProxPyMapConfig::MapMaxSize;
|
|
const string table_name = ProxPyMapConfig::TableName;
|
|
|
|
public:
|
|
ProxPy();
|
|
~ProxPy();
|
|
bool insert(std::string ruleid,
|
|
std::array<double, ProxPyMapConfig::dataMaxLen> datax,
|
|
int dataSize);
|
|
bool send2py(std::string module_name, string content);
|
|
void add_module(std::string module_name);
|
|
}; |