#ifndef PHPCPP_HELLOWORLD_TABLE_H #define PHPCPP_HELLOWORLD_TABLE_H #include #include #include "bpf_module.h" #include "BPF.h" class BaseTable : public Php::Base { public: ebpf::BPF *bpf; std::string tb_name; BaseTable(ebpf::BPF *bpf_instance, const std::string &tb_name) : bpf(bpf_instance), tb_name(tb_name) {} virtual ~BaseTable() = default; void printName(); // void printName() { std::cout << "Table name: " << tb_name << std::endl; } // Php::Value Value(Php::Parameters ¶m) { // auto index = param[0].numericValue(); // // todo val type // uint64_t val; // auto table = bpf->get_array_table(tb_name); // auto res = table.get_value(index, val); // if (!res.ok()) { // throw Php::Exception("Get value error in" + std::string(tb_name)); // } // Php::Value phpValue = static_cast(val); // return phpValue; // } }; class PerfEventArrayTable : public BaseTable { private: std::string cb; public: using BaseTable::BaseTable; virtual ~PerfEventArrayTable() = default; static void callbackfn(void *cookie, void *data, int data_size); void php_open_perf_buffer(Php::Parameters ¶ms); int perf_buffer_poll(int timeout_ms); }; class HashTable : public BaseTable { public: using BaseTable::BaseTable; Php::Value php_get_values(); void php_clear(); }; class ArrayTable : public BaseTable { public: using BaseTable::BaseTable; Php::Value php_get_value(Php::Parameters ¶m); }; class ProgArrayTable : public BaseTable { public: using BaseTable::BaseTable; // void Value(Php::Parameters ¶m) { // auto index = param[0].numericValue(); // // todo key type // uint64_t val; // auto table = bpf->get_array_table(tb_name); //// virtual StatusTuple get_value(const int& index, ValueType& value) { // auto res = table.get_value(index, val); // } }; class PerCpuHashTable : public BaseTable { public: using BaseTable::BaseTable; }; class PerCpuArrayTable : public BaseTable { public: using BaseTable::BaseTable; Php::Value php_sum_value(Php::Parameters ¶m); }; class LpmTrieTable : public BaseTable { public: using BaseTable::BaseTable; }; class StackTraceTable : public BaseTable { public: using BaseTable::BaseTable; Php::Value php_get_values(Php::Parameters ¶m); }; class LruHashTable : public BaseTable { public: using BaseTable::BaseTable; }; class LruPerCpuHashTable : public BaseTable { public: using BaseTable::BaseTable; }; class CgroupArrayTable : public BaseTable { public: using BaseTable::BaseTable; }; class DevMapTable : public BaseTable { public: using BaseTable::BaseTable; }; class CpuMapTable : public BaseTable { public: using BaseTable::BaseTable; }; class XskMapTable : public BaseTable { public: using BaseTable::BaseTable; }; class MapInMapArrayTable : public BaseTable { public: using BaseTable::BaseTable; }; class MapInMapHashTable : public BaseTable { public: using BaseTable::BaseTable; }; class QueueStackTable : public BaseTable { public: using BaseTable::BaseTable; }; class RingBufTable : public BaseTable { public: using BaseTable::BaseTable; }; #endif //PHPCPP_HELLOWORLD_TABLE_H