Skip to content

Commit

Permalink
python monitoring dictionary enhanced (still not complete) (#1715)
Browse files Browse the repository at this point in the history
  • Loading branch information
rex-schilasky authored and KerstinKeller committed Oct 2, 2024
1 parent 054c30b commit 3ada714
Showing 1 changed file with 88 additions and 13 deletions.
101 changes: 88 additions & 13 deletions lang/python/core/src/ecal_wrap.cxx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* ========================= eCAL LICENSE =================================
*
* Copyright (C) 2016 - 2019 Continental Corporation
* Copyright (C) 2016 - 2024 Continental Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -1343,6 +1343,8 @@ PyObject* mon_setfilterstate(PyObject* /*self*/, PyObject* args)
/****************************************/
/* mon_monitoring */
/****************************************/

// TODO: std::map<std::string, std::string> attr
PyObject* mon_monitoring(PyObject* /*self*/, PyObject* /*args*/)
{
PyObject* retDict = PyDict_New();
Expand Down Expand Up @@ -1371,6 +1373,9 @@ PyObject* mon_monitoring(PyObject* /*self*/, PyObject* /*args*/)
val = Py_BuildValue("s", process.hname().c_str());
PyDict_SetItemString(processDict, "hname", val); Py_DECREF(val);

val = Py_BuildValue("s", process.hgname().c_str());
PyDict_SetItemString(processDict, "hgname", val); Py_DECREF(val);

val = Py_BuildValue("i", process.pid());
PyDict_SetItemString(processDict, "pid", val); Py_DECREF(val);

Expand Down Expand Up @@ -1418,6 +1423,9 @@ PyObject* mon_monitoring(PyObject* /*self*/, PyObject* /*args*/)

val = Py_BuildValue("s", process.component_init_info().c_str());
PyDict_SetItemString(processDict, "component_init_info", val); Py_DECREF(val);

val = Py_BuildValue("s", process.ecal_runtime_version().c_str());
PyDict_SetItemString(processDict, "ecal_runtime_version", val); Py_DECREF(val);
}

// collect service infos
Expand Down Expand Up @@ -1449,25 +1457,76 @@ PyObject* mon_monitoring(PyObject* /*self*/, PyObject* /*args*/)
val = Py_BuildValue("s", service.sname().c_str());
PyDict_SetItemString(serviceDict, "sname", val); Py_DECREF(val);

val = Py_BuildValue("i", service.version());
PyDict_SetItemString(serviceDict, "version", val); Py_DECREF(val);

val = Py_BuildValue("i", service.tcp_port_v0());
PyDict_SetItemString(serviceDict, "tcp_port_v0", val); Py_DECREF(val);

val = Py_BuildValue("i", service.tcp_port_v1());
PyDict_SetItemString(serviceDict, "tcp_port_v1", val); Py_DECREF(val);

PyObject* methodsDict = PyDict_New();
PyDict_SetItemString(serviceDict, "methods", methodsDict); Py_DECREF(methodsDict);

// for(int i = 0; i < service.methods().size(); ++i)
// {
// const eCAL::pb::Method& method = service.methods(i);
for(int i = 0; i < service.methods().size(); ++i)
{
const eCAL::pb::Method& method = service.methods(i);

val = Py_BuildValue("s", method.mname().c_str());
PyDict_SetItemString(methodsDict, "mname", val); Py_DECREF(val);

val = Py_BuildValue("s", method.req_type().c_str());
PyDict_SetItemString(methodsDict, "req_type", val); Py_DECREF(val);

// TODO: std::string req_desc

val = Py_BuildValue("s", method.resp_type().c_str());
PyDict_SetItemString(methodsDict, "resp_type", val); Py_DECREF(val);

// TODO: std::string resp_desc

val = Py_BuildValue("i", method.call_count());
PyDict_SetItemString(methodsDict, "call_count", val); Py_DECREF(val);
}
}

// collect client infos
{
PyObject* clientList = PyList_New(0);
PyDict_SetItemString(retDict, "clients", clientList); Py_DECREF(clientList);

for (int i = 0; i < monitoring.clients().size(); ++i)
{
PyObject* clientDict = PyDict_New();
PyList_Append(clientList, clientDict); Py_DECREF(clientDict);

// val = Py_BuildValue("s", method.mname().c_str());
// PyDict_SetItemString(methodsDict, "mname", val); Py_DECREF(val);
const auto& client = monitoring.clients(i);

val = Py_BuildValue("i", client.rclock());
PyDict_SetItemString(clientDict, "rclock", val); Py_DECREF(val);

// val = Py_BuildValue("s", method.inp_type().c_str());
// PyDict_SetItemString(methodsDict, "inp_type", val); Py_DECREF(val);
val = Py_BuildValue("s", client.hname().c_str());
PyDict_SetItemString(clientDict, "hname", val); Py_DECREF(val);

// val = Py_BuildValue("s", method.out_type().c_str());
// PyDict_SetItemString(methodsDict, "out_type", val); Py_DECREF(val);
val = Py_BuildValue("s", client.pname().c_str());
PyDict_SetItemString(clientDict, "pname", val); Py_DECREF(val);

// val = Py_BuildValue("i", method.call_count());
// PyDict_SetItemString(methodsDict, "call_count", val); Py_DECREF(val);
//}
val = Py_BuildValue("s", client.uname().c_str());
PyDict_SetItemString(clientDict, "uname", val); Py_DECREF(val);

val = Py_BuildValue("i", client.pid());
PyDict_SetItemString(clientDict, "pid", val); Py_DECREF(val);

val = Py_BuildValue("s", client.sname().c_str());
PyDict_SetItemString(clientDict, "sname", val); Py_DECREF(val);

val = Py_BuildValue("s", client.sid().c_str());
PyDict_SetItemString(clientDict, "sid", val); Py_DECREF(val);

val = Py_BuildValue("i", client.version());
PyDict_SetItemString(clientDict, "version", val); Py_DECREF(val);
}
}

// collect topic infos
Expand Down Expand Up @@ -1511,9 +1570,25 @@ PyObject* mon_monitoring(PyObject* /*self*/, PyObject* /*args*/)
val = Py_BuildValue("y#", topic.tdesc().c_str(), (Py_ssize_t)(topic.tdesc().length()));
PyDict_SetItemString(topicDict, "tdesc", val); Py_DECREF(val);

// TODO: SDataTypeInformation tdatatype

// TODO: std::vector<TLayer> tlayer

val = Py_BuildValue("i", topic.tsize());
PyDict_SetItemString(topicDict, "tsize", val); Py_DECREF(val);

val = Py_BuildValue("i", topic.connections_loc());
PyDict_SetItemString(topicDict, "connections_loc", val); Py_DECREF(val);

val = Py_BuildValue("i", topic.connections_ext());
PyDict_SetItemString(topicDict, "connections_ext", val); Py_DECREF(val);

val = Py_BuildValue("i", topic.message_drops());
PyDict_SetItemString(topicDict, "message_drops", val); Py_DECREF(val);

val = Py_BuildValue("i", topic.did());
PyDict_SetItemString(topicDict, "did", val); Py_DECREF(val);

val = Py_BuildValue("i", topic.dclock());
PyDict_SetItemString(topicDict, "dclock", val); Py_DECREF(val);

Expand Down

0 comments on commit 3ada714

Please sign in to comment.