Appearance
file /Users/ios_developer/workspace/coldwave-os/build/_deps/flake-src/inc/Object.h
Types
| Name | |
|---|---|
| class | flake::Indication |
| class | flake::Confirmation |
| class | flake::IndicationSink |
| class | flake::ConfirmationSink |
| class | flake::ConnectedObject |
| class | flake::Stream |
| class | flake::Object |
| class | flake::ObjectDelegate |
Defines
| Name | |
|---|---|
| EMPTY_ADDR | |
| TYPE_UUID_SERVICE | |
| MAX_OBJECT_POOL |
Macros Documentation
define EMPTY_ADDR
cpp
#define EMPTY_ADDR UINT16_C(0xFFFFU)define TYPE_UUID_SERVICE
cpp
#define TYPE_UUID_SERVICE "00000000-0000-0000-0000-000000000000"define MAX_OBJECT_POOL
cpp
#define MAX_OBJECT_POOL (4UL)Source code
cpp
/*******************************************************************************
* @file Object.h
* @license This file is part of the ImagineOn Flake software package
* licensed under the ImagineOn software-licensing terms available
* under https://www.imagineon.de/de/info/licensing-terms
* @copyright Copyright (c) 2025 ImagineOn GmbH. www.imagineon.de.
*******************************************************************************/
#ifndef FLAKE_OBJECT_H_
#define FLAKE_OBJECT_H_
#include "FlakeTypes.h"
#include <functional>
#define EMPTY_ADDR UINT16_C(0xFFFFU)
#define TYPE_UUID_SERVICE "00000000-0000-0000-0000-000000000000"
#define MAX_OBJECT_POOL (4UL)
namespace flake
{
class Table;
class ObjectImpl;
class Indication
{
public:
virtual ~Indication() noexcept = default;
virtual uint8_t
type() const = 0;
virtual addr_t
source() const = 0;
virtual addr_t
destination() const = 0;
virtual const PropArray&
getData() const = 0;
virtual void
ack(int8_t result, const PropArray& va = PropArray()) const = 0;
virtual bool
acknowledged() const = 0;
};
typedef uint16_t Token;
class Confirmation
{
public:
virtual ~Confirmation() noexcept = default;
virtual uint8_t
type() const = 0;
virtual addr_t
source() const = 0;
virtual addr_t
destination() const = 0;
virtual const PropArray&
getData() const = 0;
virtual int8_t
result() const = 0;
virtual Token
token() const = 0;
};
class IndicationSink
{
protected:
~IndicationSink() = default;
public:
virtual void
onIndication(const Indication& indication) = 0;
};
class ConfirmationSink
{
protected:
~ConfirmationSink() = default;
public:
virtual void
onConfirmation(const Confirmation& confirmation) = 0;
};
class ConnectedObject : public IndicationSink, public ConfirmationSink
{
protected:
~ConnectedObject() noexcept = default;
public:
// static const addr_t EMPTY_ADDR;
virtual addr_t addr() const = 0;
virtual addr_t broadcastAddr() const = 0;
virtual addr_t parentAddr() const = 0;
};
class Stream
{
protected:
~Stream() noexcept = default;
public:
virtual int write(uint8_t* data, unsigned int len) = 0;
virtual int read(uint8_t* data, unsigned int* len, unsigned int max_len) = 0;
virtual int seek(unsigned int pos) = 0;
virtual unsigned int pos() = 0;
virtual int close() = 0;
virtual uint32_t streamId() = 0;
};
class Object
{
friend class ConnectionImpl;
protected:
~Object() noexcept = default;
virtual ObjectImpl* impl() = 0;
public:
virtual int
invoke(std::string command, PropArray& params,
bool blocking, PropArray& reply) = 0;
virtual int
broadcast(const std::string command, PropArray& params) = 0;
virtual int
getProperties(PropArray& properties) = 0;
virtual int
setProperties(PropArray& properties) = 0;
virtual int
setProperty(const Property& property) = 0;
virtual void
getProperty(Property& property) = 0;
virtual int
openProperty(const uint32_t propTag, Stream** stream) = 0;
virtual int
subscribe(std::function<void (const Indication&)> f) = 0; //NOLINT: MISRA 7-3-1 not detected right
virtual void
unsubscribe() = 0;
virtual int
sync(unsigned timeout_ms, bool block) = 0;
virtual void
defer() = 0;
virtual int
syncDeferred(unsigned timeout_ms, bool block) = 0;
virtual bool
hasDeferred() = 0;
virtual void
clear() = 0;
};
class ObjectDelegate
{
public:
virtual ~ObjectDelegate() = default;
virtual Object* handle() = 0;
virtual int8_t
handleCustomMessage(std::string name, const PropArray& data, PropArray& outProps) = 0;
virtual int8_t
handleStreamOpen(Stream* s) = 0;
virtual int8_t
handleStreamClose(Stream* s) = 0;
virtual int8_t
handleStreamWrite(Stream* s, uint8_t* cb, uint16_t len) = 0;
virtual int8_t
handleStreamRead(Stream* s, uint8_t* cb, uint16_t* len, uint16_t max_len) = 0;
virtual int
setPropertyRequested(uint32_t tag, Property& value, const PropArray& transaction, bool internal) = 0;
virtual int
getPropertyRequested(uint32_t tag, Property& value) = 0;
virtual void
propertyChanged(const Property&) = 0;
virtual void
onInitialized() = 0;
};
}
#endif /* FLAKE_OBJECT_H */