spejsiot/spejsiot/Endpoint.h

55 lines
1.1 KiB
C++

#ifndef ENDPOINT_H
#define ENDPOINT_H
#include <SmingCore/SmingCore.h>
class SpejsNode;
class EndpointResult {
public:
int status;
String description;
EndpointResult(int _status) : status(_status) {}
EndpointResult(int _status, String _description) :
status(_status), description(_description) {}
};
class Endpoint {
protected:
SpejsNode* parent;
String name;
public:
String type;
Endpoint(String _type = "unknown") : type(_type) { }
virtual void bind(String _name, SpejsNode* _parent);
void notify(String property, String value);
virtual void onMessage(String topic, String payload);
virtual EndpointResult onValue(String property, String value) {
return 400;
}
virtual void onConnected();
static Endpoint* fromJSON(JsonObject& obj) {
return NULL;
}
};
template <class T> class ValueEndpoint : public Endpoint {
protected:
T value;
void updateValue(T newValue);
public:
ValueEndpoint(String _type) : Endpoint(_type) {}
};
typedef Endpoint* (*EndpointInitializer) (JsonObject&);
#endif