22 #ifndef IOController_H_
23 #define IOController_H_
25 #include <unordered_map>
27 #include <sigc++/sigc++.h>
28 #include "IOController_i.hh"
29 #include "UniSetTypes.h"
30 #include "UniSetManager.h"
31 #include "Configuration.h"
39 public POA_IOController_i
43 IOController(
const std::string& name,
const std::string& section );
64 CORBA::Boolean undefined,
68 virtual IOController_i::SensorInfoSeq* getSensorSeq(
const uniset::IDSeq& lst )
override;
74 virtual IOController_i::SensorInfoSeq* getSensorsMap()
override;
97 virtual IOController_i::ShortMapSeq* getSensors()
override;
99 #ifndef DISABLE_REST_API
101 virtual Poco::JSON::Object::Ptr httpHelp(
const Poco::URI::QueryParameters& p )
override;
102 virtual Poco::JSON::Object::Ptr httpRequest(
const std::string& req,
const Poco::URI::QueryParameters& p )
override;
109 typedef std::unordered_map<uniset::ObjectId, std::shared_ptr<USensorInfo>> IOStateList;
118 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> ChangeUndefinedStateSignal;
127 ChangeUndefinedStateSignal signal_change_undefined_state(
uniset::ObjectId sid );
128 ChangeUndefinedStateSignal signal_change_undefined_state();
133 inline IOStateList::iterator ioBegin()
135 return ioList.begin();
137 inline IOStateList::iterator ioEnd()
143 return ioList.find(k);
145 inline int ioCount()
const
147 return ioList.size();
154 virtual long localSetValueIt( IOStateList::iterator& it,
const uniset::ObjectId sid,
157 virtual long localGetValue( IOStateList::iterator& it,
const uniset::ObjectId sid );
167 virtual long localSetValue( std::shared_ptr<USensorInfo>& usi, CORBA::Long value,
uniset::ObjectId sup_id );
168 long localGetValue( std::shared_ptr<USensorInfo>& usi) ;
170 #ifndef DISABLE_REST_API
172 virtual Poco::JSON::Object::Ptr request_get(
const std::string& req,
const Poco::URI::QueryParameters& p );
173 virtual Poco::JSON::Object::Ptr request_sensors(
const std::string& req,
const Poco::URI::QueryParameters& p );
174 void getSensorInfo( Poco::JSON::Array::Ptr& jdata, std::shared_ptr<USensorInfo>& s ,
bool shortInfo =
false );
189 typedef sigc::signal<void, std::shared_ptr<USensorInfo>&,
IOController*> InitSignal;
192 InitSignal signal_init();
197 void ioRegistration(std::shared_ptr<USensorInfo>& usi,
bool force =
false );
205 uniset::Message::Priority p = uniset::Message::Medium,
230 return std::move(ai);
242 IOStateList::iterator myioBegin();
243 IOStateList::iterator myioEnd();
249 friend class NCRestorer;
250 friend class SMInterface;
252 std::mutex siganyMutex;
255 std::mutex siganyundefMutex;
264 std::mutex loggingMutex;
301 static const size_t MaxUserData = 4;
302 void*
userdata[MaxUserData] = {
nullptr,
nullptr,
nullptr,
nullptr };
310 ChangeUndefinedStateSignal sigUndefChange;
315 std::shared_ptr<USensorInfo> d_usi;
317 size_t nchanges = { 0 };
320 void checkDepend( std::shared_ptr<USensorInfo>& d_usi,
IOController* );
336 sm.sensor_type =
type;
337 sm.priority = (uniset::Message::Priority)
priority;
350 return std::move(sm);