You need to sign in or sign up before continuing.
Commit 30d0c144 authored by Pavel Vainerman's avatar Pavel Vainerman

(UHttp): накидал скелет python API для SharedMemory

parent 3741b025
...@@ -53,7 +53,7 @@ HTTP API: ...@@ -53,7 +53,7 @@ HTTP API:
- запрос о том, кто последний сохранил указанный датчик - запрос о том, кто последний сохранил указанный датчик
- список объектов возвращать с их типом (чтобы можно было SM вычислять) - список объектов возвращать с их типом (чтобы можно было SM вычислять)
= Сделать возможность настраивать параметры httpserver-а из командной строки (количество потоков и т.п.) = Сделать возможность настраивать параметры httpserver-а из командной строки (количество потоков и т.п.)
- ТЕСТЫ (как вариант поизучать про тестовые фреймворки на питоне) - ТЕСТЫ (как вариант поизучать про тестовые фреймворки на питоне (pytest?)
Version 2.5 Version 2.5
......
...@@ -80,3 +80,47 @@ class SharedMemoryAPI(UniSetHTTPService): ...@@ -80,3 +80,47 @@ class SharedMemoryAPI(UniSetHTTPService):
return self.request(query)[self.settings['smID']]['consumers'] return self.request(query)[self.settings['smID']]['consumers']
def get(self, sensors='', shortInfo=True):
"""Получить список заказчиков"""
query = '/get'
params = None
if sensors != '':
params = '?%s' % sensors
if shortInfo:
if params != None:
params += '&shortInfo'
else:
params = '?shortInfo'
if params:
query += params
return self.request(query)[self.settings['smID']]['sensors']
def sensors(self, offset=None, limit=None):
"""Получить список датчиков"""
query = '/sensors'
params = None
if offset:
params = '?offset=%d' % offset
if limit:
if params != None:
params += '&limit=%d'%limit
else:
params = '?limit=%d'%limit
if params:
query += params
return self.request(query)
def lost(self):
"""Получить список 'пропавших' заказчиков"""
return self.request('/lost')[self.settings['smID']]
def help(self):
return self.request('/help')[self.settings['smID']]
\ No newline at end of file
...@@ -21,7 +21,12 @@ if __name__ == "__main__": ...@@ -21,7 +21,12 @@ if __name__ == "__main__":
shm = SharedMemoryAPI(settings) shm = SharedMemoryAPI(settings)
print shm.consumers() # print shm.consumers()
# print shm.get(sensors='10,12')
# print shm.lost()
# print shm.help()
print shm.sensors(0,10)
except UHTTPError, e: except UHTTPError, e:
print e.message print e.message
...@@ -936,8 +936,9 @@ nlohmann::json IOController::request_get( const string& req, const Poco::URI::Qu ...@@ -936,8 +936,9 @@ nlohmann::json IOController::request_get( const string& req, const Poco::URI::Qu
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void IOController::getSensorInfo( nlohmann::json& jdata, std::shared_ptr<USensorInfo>& s, bool shortInfo ) void IOController::getSensorInfo( nlohmann::json& jdata, std::shared_ptr<USensorInfo>& s, bool shortInfo )
{ {
string sid( to_string(s->si.id));
auto& jsens = jdata[sid]; string sname = ORepHelpers::getShortName(uniset_conf()->oind->getMapName(s->si.id));
auto& jsens = jdata[sname];
{ {
uniset_rwmutex_rlock lock(s->val_lock); uniset_rwmutex_rlock lock(s->val_lock);
...@@ -945,10 +946,12 @@ void IOController::getSensorInfo( nlohmann::json& jdata, std::shared_ptr<USensor ...@@ -945,10 +946,12 @@ void IOController::getSensorInfo( nlohmann::json& jdata, std::shared_ptr<USensor
jsens["real_value"] = s->real_value; jsens["real_value"] = s->real_value;
} }
jsens["id"] = sid; jsens["id"] = s->si.id;
jsens["name"] = ORepHelpers::getShortName(uniset_conf()->oind->getMapName(s->si.id)); jsens["name"] = sname;
jsens["tv_sec"] = s->tv_sec; jsens["tv_sec"] = s->tv_sec;
jsens["tv_nsec"] = s->tv_nsec; jsens["tv_nsec"] = s->tv_nsec;
jsens["supplier"] = ORepHelpers::getShortName(uniset_conf()->oind->getMapName(s->supplier));
jsens["supplierID"] = s->supplier;
if( shortInfo ) if( shortInfo )
return; return;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment