eis/eqpalg/utility/proxy_py.h

61 lines
1.6 KiB
C
Raw Normal View History

#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);
};