38 lines
744 B
C++
38 lines
744 B
C++
#pragma once
|
|
|
|
#include <glacier/status/error_or.h>
|
|
#include <glacier/string/string.h>
|
|
#include <stdint.h>
|
|
#include <zcall.h>
|
|
|
|
namespace mmth {
|
|
|
|
class PortClient {
|
|
public:
|
|
PortClient() {}
|
|
static PortClient AdoptPort(z_cap_t port_cap);
|
|
|
|
template <typename T>
|
|
z_err_t WriteMessage(const T& obj, z_cap_t cap);
|
|
|
|
glcr::ErrorCode WriteString(glcr::String str, z_cap_t cap);
|
|
|
|
glcr::ErrorCode WriteByte(uint8_t byte);
|
|
|
|
z_cap_t cap() { return port_cap_; }
|
|
|
|
bool empty() { return port_cap_ == 0; }
|
|
|
|
private:
|
|
z_cap_t port_cap_ = 0;
|
|
|
|
PortClient(z_cap_t port_cap);
|
|
};
|
|
|
|
template <typename T>
|
|
z_err_t PortClient::WriteMessage(const T& obj, z_cap_t cap) {
|
|
return ZPortSend(port_cap_, sizeof(obj), &obj, 1, &cap);
|
|
}
|
|
|
|
} // namespace mmth
|