2 #include "ypc/corecommon/nt_cols.h"
3 #include "ypc/stbox/ebyte.h"
4 #include "ypc/stbox/tsgx/log.h"
5 #include <ff/net/middleware/ntpackage.h>
7 #include <unordered_map>
11 template <uint32_t PackageID,
typename... ARGS>
12 using sgx_package = ff::net::ntpackage<PackageID, ARGS...>;
13 using sgx_marshaler = ff::net::marshaler;
16 request_data_item = 1,
19 request_private_key_item,
20 request_skey_from_pkey_item,
21 request_extra_data_usage_license_item,
22 ack_extra_data_usage_license_item,
23 request_extra_data_item,
27 typedef sgx_package<request_data_item, ypc::nt<stbox::bytes>::reserve>
29 typedef sgx_package<response_data_item, ypc::nt<stbox::bytes>::data>
31 typedef sgx_package<ctrl_type, ypc::nt<stbox::bytes>::reserve> ctrl_pkg_t;
32 typedef sgx_package<request_private_key_item, ypc::nt<stbox::bytes>::id>
33 request_private_key_pkg_t;
34 typedef sgx_package<request_skey_from_pkey_item, ypc::nt<stbox::bytes>::pkey>
35 request_skey_from_pkey_pkg_t;
37 typedef sgx_package<request_extra_data_usage_license_item,
41 request_extra_data_usage_license_pkg_t;
42 typedef sgx_package<ack_extra_data_usage_license_item,
44 ack_extra_data_usage_license_pkg_t;
46 typedef sgx_package<request_extra_data_item, ypc::nt<stbox::bytes>::data_hash>
47 request_extra_data_pkg_t;
48 typedef sgx_package<ack_extra_data_item, ypc::nt<stbox::bytes>::data>
53 template <
typename PkgType>
55 add_to_handle_pkg(
const std::function<
void(std::shared_ptr<PkgType>)> &f) {
56 auto p = [f](
const uint8_t *buf,
size_t s) {
57 sgx_marshaler m((
const char *)buf, s, sgx_marshaler::deserializer);
58 std::shared_ptr<PkgType> pkg(
new PkgType());
62 m_all_handlers.insert(std::make_pair(PkgType::package_id, p));
67 template <
typename T>
void handle_pkg(
const T *buf,
size_t len) {
68 handle_pkg((
const uint8_t *)buf, len);
70 void handle_pkg(
const uint8_t *buf,
size_t len);
72 template <
typename PkgType>
bool is_pkg_handled()
const {
73 return m_all_handlers.find(PkgType::package_id) != m_all_handlers.end();
77 typedef std::function<void(
const uint8_t *buf,
size_t s)> base_pkg_handler_t;
78 std::unordered_map<uint32_t, base_pkg_handler_t> m_all_handlers;