Files
cariflex/tools/EVerest-main/modules/API/RpcApi/server/TransportInterface.hpp
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

57 lines
1.6 KiB
C++

// SPDX-License-Identifier: Apache-2.0
// Copyright chargebyte GmbH and Contributors to EVerest
#ifndef TRANSPORTINTERFACE_HPP
#define TRANSPORTINTERFACE_HPP
#include <cstdint>
#include <functional>
#include <memory>
#include <optional>
#include <stdexcept>
#include <string>
#include <vector>
namespace server {
class TransportInterface {
public:
using ClientId = std::string;
using Address = std::string;
using Data = std::vector<uint8_t>;
explicit TransportInterface() = default;
virtual ~TransportInterface() = default;
const std::string& server_name() const;
virtual void send_data(const Data& data) = 0;
virtual void send_data(const ClientId& clientId, const Data& data) = 0;
inline void send_data(const ClientId& clientId, const std::string& data) {
send_data(clientId, std::vector<uint8_t>(data.begin(), data.end()));
};
virtual void kill_client_connection(const ClientId& clientId, const std::string& killReason) = 0;
virtual uint32_t connections_count() const = 0;
const std::string& server_url() const;
void set_server_url(const std::string& serverUrl);
virtual bool running() const = 0;
std::function<void(const ClientId&, const Address&)> on_client_connected;
std::function<void(const ClientId&)> on_client_disconnected;
std::function<void(const ClientId&, const Data&)> on_data_available;
protected:
std::string m_server_url;
std::string m_server_name;
public:
virtual bool start_server() = 0;
virtual bool stop_server() = 0;
};
} // namespace server
#endif // TRANSPORTINTERFACE_HPP