#pragma once
#include <memory>
#include "vsomeip/vsomeip.hpp"
namespace glue {
using message_handler_fn_ptr = void (*)(const std::shared_ptr< vsomeip_v3::message > &);
using availability_handler_fn_ptr = void (*)(vsomeip_v3::service_t, vsomeip_v3::instance_t, bool);
using subscription_status_handler_fn_ptr = void (*)(const vsomeip_v3::service_t, const vsomeip_v3::instance_t, const vsomeip_v3::eventgroup_t,
const vsomeip_v3::event_t, const uint16_t);
using state_handler_fn_ptr = void (*)(vsomeip_v3::state_type_e);
class ApplicationWrapper {
public:
explicit ApplicationWrapper(std::shared_ptr<vsomeip_v3::application> ptr) : ptr_(std::move(ptr)) {}
vsomeip_v3::application* get_mut() const {
return ptr_.get();
}
std::shared_ptr<vsomeip_v3::application> get_shared_ptr() const {
return ptr_;
}
ApplicationWrapper* get_self() {
return this;
}
private:
std::shared_ptr<vsomeip_v3::application> ptr_;
};
std::unique_ptr<ApplicationWrapper> make_application_wrapper(std::shared_ptr<vsomeip_v3::application> ptr);
}