54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
/** @file
|
|
* @author Edouard DUPIN
|
|
* @copyright 2016, Edouard DUPIN, all right reserved
|
|
* @license MPL v2.0 (see license file)
|
|
*/
|
|
|
|
#include <zeus/Object.hpp>
|
|
#include <zeus/debug.hpp>
|
|
#include <etk/stdTools.hpp>
|
|
#include <enet/TcpClient.hpp>
|
|
#include <zeus/Client.hpp>
|
|
|
|
|
|
|
|
zeus::Object::Object(const ememory::SharedPtr<zeus::WebServer>& _iface, uint16_t _objectId) :
|
|
zeus::RemoteProcessCall(_iface, _iface->getAddress(), _objectId) {
|
|
|
|
}
|
|
|
|
void zeus::Object::receive(ememory::SharedPtr<zeus::Message> _value) {
|
|
if (_value == nullptr) {
|
|
return;
|
|
}
|
|
if (_value->getPartFinish() == false) {
|
|
ZEUS_ERROR("call a receive function with a not finished message ...");
|
|
return;
|
|
}
|
|
if (_value->getType() == zeus::message::type::event) {
|
|
ZEUS_ERROR("Unknow event: '...'");
|
|
return;
|
|
}
|
|
if (_value->getType() == zeus::message::type::answer) {
|
|
ZEUS_ERROR("Local Answer: '...'");
|
|
return;
|
|
}
|
|
if (_value->getType() == zeus::message::type::data) {
|
|
ZEUS_ERROR("Local DATA: '...'");
|
|
return;
|
|
}
|
|
if (_value->getType() == zeus::message::type::call) {
|
|
ememory::SharedPtr<zeus::message::Call> callObj = ememory::staticPointerCast<zeus::message::Call>(_value);
|
|
uint32_t source = callObj->getSource();
|
|
uint32_t sourceId = callObj->getSourceId();
|
|
std::string callFunction = callObj->getCall();
|
|
if (isFunctionAuthorized(sourceId, callFunction) == true) {
|
|
callBinary(callFunction, callObj);
|
|
return;
|
|
} else {
|
|
m_interfaceWeb->answerError(callObj->getTransactionId(), getFullId(), source, "NOT-AUTHORIZED-FUNCTION", "");
|
|
return;
|
|
}
|
|
}
|
|
}
|