40 {
41 char *data = nullptr;
42 Py_ssize_t len = 0;
43 if (!PyArg_ParseTuple(args, const_cast<char *>("s#:cyber_py_init"), &data,
44 &len)) {
45 AERROR <<
"cyber_py_init:PyArg_ParseTuple failed!";
46 Py_RETURN_FALSE;
47 }
48 std::string module_name(data, len);
50 if (is_init) {
51 Py_RETURN_TRUE;
52 } else {
53 Py_RETURN_FALSE;
54 }
55}
56
57static PyObject *cyber_py_ok(PyObject *self, PyObject *args) {
59 if (is_ok) {
60 Py_RETURN_TRUE;
61 } else {
62 Py_RETURN_FALSE;
63 }
64}
65
66static PyObject *cyber_py_shutdown(PyObject *self, PyObject *args) {
68 Py_INCREF(Py_None);
69 return Py_None;
70}
71
72static PyObject *cyber_py_is_shutdown(PyObject *self, PyObject *args) {
74 if (is_shutdown) {
75 Py_RETURN_TRUE;
76 } else {
77 Py_RETURN_FALSE;
78 }
79}
80
81static PyObject *cyber_py_waitforshutdown(PyObject *self, PyObject *args) {
83 Py_INCREF(Py_None);
84 return Py_None;
85}
86
87template <typename T>
88T
PyObjectToPtr(PyObject *pyobj,
const std::string &type_ptr) {
89 T obj_ptr = (T)PyCapsule_GetPointer(pyobj, type_ptr.c_str());
90 if (obj_ptr == nullptr) {
91 AERROR <<
"PyObjectToPtr failed,type->" << type_ptr <<
"pyobj: " << pyobj;
92 }
93 return obj_ptr;
94}
95
97 char *channel_name = nullptr;
99 uint32_t qos_depth = 1;
100
101 PyObject *node_pyobj = nullptr;
102 if (!PyArg_ParseTuple(args, const_cast<char *>("ssIO:new_PyWriter"),
103 &channel_name, &
data_type, &qos_depth, &node_pyobj)) {
104 Py_INCREF(Py_None);
105 return Py_None;
106 }
107
108 Node *node =
reinterpret_cast<Node *
>(
109 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
110 if (nullptr == node) {
112 Py_INCREF(Py_None);
113 return Py_None;
114 }
115
117 new PyWriter((std::string
const &)*channel_name,
118 (std::string
const &)*
data_type, qos_depth, node);
119 PyObject *pyobj_writer =
120 PyCapsule_New(writer, "apollo_cyber_pywriter", nullptr);
121 return pyobj_writer;
122}
123
125 PyObject *writer_py = nullptr;
126 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyWriter"),
127 &writer_py)) {
128 Py_INCREF(Py_None);
129 return Py_None;
130 }
131
133 PyCapsule_GetPointer(writer_py, "apollo_cyber_pywriter"));
134 delete writer;
135 Py_INCREF(Py_None);
136 return Py_None;
137}
138
140 PyObject *pyobj_writer = nullptr;
141 char *data = nullptr;
142 Py_ssize_t len = 0;
143 if (!PyArg_ParseTuple(args, const_cast<char *>("Os#:cyber_PyWriter_write"),
144 &pyobj_writer, &data, &len)) {
145 AERROR <<
"cyber_PyWriter_write:cyber_PyWriter_write failed!";
147 }
148
150 PyObjectToPtr<PyWriter *>(pyobj_writer, "apollo_cyber_pywriter");
151
152 if (nullptr == writer) {
153 AERROR <<
"cyber_PyWriter_write:writer ptr is null!";
155 }
156
157 std::string data_str(data, len);
158 int ret = writer->
write(data_str);
160}
161
163 char *channel_name = nullptr;
165 PyObject *node_pyobj = nullptr;
166 if (!PyArg_ParseTuple(args, const_cast<char *>("ssO:new_PyReader"),
167 &channel_name, &
data_type, &node_pyobj)) {
168 Py_INCREF(Py_None);
169 return Py_None;
170 }
171
172 Node *node =
reinterpret_cast<Node *
>(
173 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
174 if (!node) {
176 Py_INCREF(Py_None);
177 return Py_None;
178 }
179
182 PyObject *pyobj_reader =
183 PyCapsule_New(reader, "apollo_cyber_pyreader", nullptr);
184 return pyobj_reader;
185}
186
188 PyObject *reader_py = nullptr;
189 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyReader"),
190 &reader_py)) {
191 Py_INCREF(Py_None);
192 return Py_None;
193 }
194
196 PyCapsule_GetPointer(reader_py, "apollo_cyber_pyreader"));
197 delete reader;
198 Py_INCREF(Py_None);
199 return Py_None;
200}
201
203 PyObject *pyobj_reader = nullptr;
204 PyObject *pyobj_iswait = nullptr;
205
206 if (!PyArg_ParseTuple(args, const_cast<char *>("OO:cyber_PyReader_read"),
207 &pyobj_reader, &pyobj_iswait)) {
208 AERROR <<
"cyber_PyReader_read:PyArg_ParseTuple failed!";
209 Py_INCREF(Py_None);
210 return Py_None;
211 }
213 PyObjectToPtr<PyReader *>(pyobj_reader, "apollo_cyber_pyreader");
214 if (nullptr == reader) {
215 AERROR <<
"cyber_PyReader_read:PyReader ptr is null!";
216 Py_INCREF(Py_None);
217 return Py_None;
218 }
219
220 int r = PyObject_IsTrue(pyobj_iswait);
221 if (r == -1) {
222 AERROR <<
"cyber_PyReader_read:pyobj_iswait is error!";
223 Py_INCREF(Py_None);
224 return Py_None;
225 }
226
227 bool wait = (r == 1);
228
229 const std::string reader_ret = reader->
read(wait);
231}
232
234 PyObject *pyobj_regist_fun = nullptr;
235 PyObject *pyobj_reader = nullptr;
236
237 int (*callback_fun)(char const *) = (int (*)(char const *))0;
238
239 if (!PyArg_ParseTuple(args, const_cast<char *>("OO:PyReader_register_func"),
240 &pyobj_reader, &pyobj_regist_fun)) {
241 Py_INCREF(Py_None);
242 return Py_None;
243 }
244
246 PyObjectToPtr<PyReader *>(pyobj_reader, "apollo_cyber_pyreader");
247 callback_fun = (int (*)(
const char *i))
PyInt_AsLong(pyobj_regist_fun);
248 if (reader) {
249 AINFO <<
"reader regist fun";
251 }
252
253 Py_INCREF(Py_None);
254 return Py_None;
255}
256
258 char *channel_name = nullptr;
260 PyObject *node_pyobj = nullptr;
261 if (!PyArg_ParseTuple(args, const_cast<char *>("ssO:new_PyClient"),
262 &channel_name, &
data_type, &node_pyobj)) {
263 Py_INCREF(Py_None);
264 return Py_None;
265 }
266
267 Node *node =
reinterpret_cast<Node *
>(
268 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
269 if (!node) {
271 Py_INCREF(Py_None);
272 return Py_None;
273 }
274
277 PyObject *pyobj_client =
278 PyCapsule_New(client, "apollo_cyber_pyclient", nullptr);
279 return pyobj_client;
280}
281
283 PyObject *client_py = nullptr;
284 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyClient"),
285 &client_py)) {
286 Py_INCREF(Py_None);
287 return Py_None;
288 }
289
291 PyCapsule_GetPointer(client_py, "apollo_cyber_pyclient"));
292 delete client;
293 Py_INCREF(Py_None);
294 return Py_None;
295}
296
298 PyObject *pyobj_client = nullptr;
299 char *data = nullptr;
300 Py_ssize_t len = 0;
301 if (!PyArg_ParseTuple(args, const_cast<char *>("Os#:PyClient_send_request"),
302 &pyobj_client, &data, &len)) {
303 AERROR <<
"cyber_PyClient_send_request:PyArg_ParseTuple failed!";
305 }
306
308 PyObjectToPtr<PyClient *>(pyobj_client, "apollo_cyber_pyclient");
309
310 if (nullptr == client) {
311 AERROR <<
"cyber_PyClient_send_request:client ptr is null!";
313 }
314
315 std::string data_str(data, len);
316 ADEBUG <<
"c++:PyClient_send_request data->[ " << data_str <<
"]";
317 const std::string response_str =
319 ADEBUG <<
"c++:response data->[ " << response_str <<
"]";
321}
322
324 char *channel_name = nullptr;
326 PyObject *node_pyobj = nullptr;
327 if (!PyArg_ParseTuple(args, const_cast<char *>("ssO:new_PyService"),
328 &channel_name, &
data_type, &node_pyobj)) {
329 Py_INCREF(Py_None);
330 return Py_None;
331 }
332
333 Node *node =
reinterpret_cast<Node *
>(
334 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
335 if (!node) {
337 Py_INCREF(Py_None);
338 return Py_None;
339 }
340
343 PyObject *pyobj_service =
344 PyCapsule_New(service, "apollo_cyber_pyservice", nullptr);
345 return pyobj_service;
346}
347
349 PyObject *pyobj_service = nullptr;
350 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyService"),
351 &pyobj_service)) {
352 Py_INCREF(Py_None);
353 return Py_None;
354 }
355
357 PyCapsule_GetPointer(pyobj_service, "apollo_cyber_pyservice"));
358 delete service;
359 Py_INCREF(Py_None);
360 return Py_None;
361}
362
364 PyObject *pyobj_regist_fun = nullptr;
365 PyObject *pyobj_service = nullptr;
366
367 int (*callback_fun)(char const *) = (int (*)(char const *))0;
368
369 if (!PyArg_ParseTuple(args, const_cast<char *>("OO:PyService_register_func"),
370 &pyobj_service, &pyobj_regist_fun)) {
371 Py_INCREF(Py_None);
372 return Py_None;
373 }
374
376 PyObjectToPtr<PyService *>(pyobj_service, "apollo_cyber_pyservice");
377 callback_fun = (int (*)(
const char *i))
PyInt_AsLong(pyobj_regist_fun);
378 if (service) {
379 AINFO <<
"service regist fun";
381 }
382
383 Py_INCREF(Py_None);
384 return Py_None;
385}
386
388 PyObject *pyobj_service = nullptr;
389 if (!PyArg_ParseTuple(args, const_cast<char *>("O:cyber_PyService_read"),
390 &pyobj_service)) {
391 AERROR <<
"cyber_PyService_read:PyArg_ParseTuple failed!";
393 }
395 PyObjectToPtr<PyService *>(pyobj_service, "apollo_cyber_pyservice");
396 if (nullptr == service) {
397 AERROR <<
"cyber_PyService_read:service ptr is null!";
399 }
400
401 const std::string reader_ret = service->
read();
402 ADEBUG <<
"c++:PyService_read -> " << reader_ret;
404}
405
407 PyObject *pyobj_service = nullptr;
408 char *data = nullptr;
409 Py_ssize_t len = 0;
410 if (!PyArg_ParseTuple(args, const_cast<char *>("Os#:cyber_PyService_write"),
411 &pyobj_service, &data, &len)) {
412 AERROR <<
"cyber_PyService_write:PyArg_ParseTuple failed!";
414 }
415
417 PyObjectToPtr<PyService *>(pyobj_service, "apollo_cyber_pyservice");
418
419 if (nullptr == service) {
420 AERROR <<
"cyber_PyService_write:writer ptr is null!";
422 }
423
424 std::string data_str(data, len);
425 ADEBUG <<
"c++:PyService_write data->[ " << data_str <<
"]";
426 int ret = service->
write((std::string
const &)data_str);
428}
429
431 char *node_name = nullptr;
432 if (!PyArg_ParseTuple(args, const_cast<char *>("s:new_PyNode"), &node_name)) {
433 Py_INCREF(Py_None);
434 return Py_None;
435 }
436
437 PyNode *node =
new PyNode((std::string
const &)node_name);
438 PyObject *pyobj_node = PyCapsule_New(node, "apollo_cyber_pynode", nullptr);
439 return pyobj_node;
440}
441
443 PyObject *pyobj_node = nullptr;
444 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyNode"),
445 &pyobj_node)) {
446 Py_INCREF(Py_None);
447 return Py_None;
448 }
449
451 PyCapsule_GetPointer(pyobj_node, "apollo_cyber_pynode"));
452 delete node;
453 Py_INCREF(Py_None);
454 return Py_None;
455}
456
458 PyObject *pyobj_node = nullptr;
459 char *channel_name = nullptr;
460 char *type_name = nullptr;
461 uint32_t qos_depth = 1;
462
463 if (!PyArg_ParseTuple(args, const_cast<char *>("OssI:PyNode_create_writer"),
464 &pyobj_node, &channel_name, &type_name, &qos_depth)) {
465 AERROR <<
"cyber_PyNode_create_writer:PyArg_ParseTuple failed!";
466 Py_INCREF(Py_None);
467 return Py_None;
468 }
469
470 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
471 if (nullptr == node) {
472 AERROR <<
"cyber_PyNode_create_writer:node ptr is null!";
473 Py_INCREF(Py_None);
474 return Py_None;
475 }
476
479 (std::string const &)type_name, qos_depth)));
480
481 if (nullptr == writer) {
482 AERROR <<
"cyber_PyNode_create_writer:writer is null!";
483 Py_INCREF(Py_None);
484 return Py_None;
485 }
486 PyObject *pyobj_writer =
487 PyCapsule_New(writer, "apollo_cyber_pywriter", nullptr);
488 return pyobj_writer;
489}
490
492 char *channel_name = nullptr;
493 char *type_name = nullptr;
494 PyObject *pyobj_node = nullptr;
495
496 if (!PyArg_ParseTuple(args, const_cast<char *>("Oss:PyNode_create_reader"),
497 &pyobj_node, &channel_name, &type_name)) {
498 AERROR <<
"PyNode_create_reader:PyArg_ParseTuple failed!";
499 Py_INCREF(Py_None);
500 return Py_None;
501 }
502
503 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
504 if (nullptr == node) {
505 AERROR <<
"PyNode_create_reader:node ptr is null!";
506 Py_INCREF(Py_None);
507 return Py_None;
508 }
509
511 (std::string const &)channel_name, (std::string const &)type_name)));
512 ACHECK(reader) <<
"PyReader is NULL!";
513
514 PyObject *pyobj_reader =
515 PyCapsule_New(reader, "apollo_cyber_pyreader", nullptr);
516 return pyobj_reader;
517}
518
520 char *channel_name = nullptr;
521 char *type_name = nullptr;
522 PyObject *pyobj_node = nullptr;
523
524 if (!PyArg_ParseTuple(args, const_cast<char *>("Oss:PyNode_create_client"),
525 &pyobj_node, &channel_name, &type_name)) {
526 AERROR <<
"PyNode_create_client:PyArg_ParseTuple failed!";
527 Py_INCREF(Py_None);
528 return Py_None;
529 }
530
531 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
532 if (nullptr == node) {
533 AERROR <<
"PyNode_create_client:node ptr is null!";
534 Py_INCREF(Py_None);
535 return Py_None;
536 }
537
539 (std::string const &)channel_name, (std::string const &)type_name)));
540 PyObject *pyobj_client =
541 PyCapsule_New(client, "apollo_cyber_pyclient", nullptr);
542
543 return pyobj_client;
544}
545
547 char *channel_name = nullptr;
548 char *type_name = nullptr;
549 PyObject *pyobj_node = nullptr;
550
551 if (!PyArg_ParseTuple(args,
552 const_cast<char *>("Oss:cyber_PyNode_create_service"),
553 &pyobj_node, &channel_name, &type_name)) {
554 AERROR <<
"cyber_PyNode_create_service:PyArg_ParseTuple failed!";
555 Py_INCREF(Py_None);
556 return Py_None;
557 }
558
559 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
560 if (nullptr == node) {
561 AERROR <<
"cyber_PyNode_create_service:node ptr is null!";
562 Py_INCREF(Py_None);
563 return Py_None;
564 }
565
567 (std::string const &)channel_name, (std::string const &)type_name)));
568 PyObject *pyobj_service =
569 PyCapsule_New(service, "apollo_cyber_pyservice", nullptr);
570 return pyobj_service;
571}
572
574 PyObject *pyobj_node = nullptr;
575
576 if (!PyArg_ParseTuple(args, const_cast<char *>("O:PyNode_shutdown"),
577 &pyobj_node)) {
578 AERROR <<
"cyber_PyNode_shutdown:PyNode_shutdown failed!";
579 Py_INCREF(Py_None);
580 return Py_None;
581 }
582
583 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
584 if (nullptr == node) {
585 AERROR <<
"cyber_PyNode_shutdown:node ptr is null!";
586 Py_INCREF(Py_None);
587 return Py_None;
588 }
590 Py_INCREF(Py_None);
591 return Py_None;
592}
593
595 PyObject *pyobj_node = nullptr;
596 char *desc = nullptr;
597 int len = 0;
598 if (!PyArg_ParseTuple(args,
599 const_cast<char *>("Os#:cyber_PyNode_register_message"),
600 &pyobj_node, &desc, &len)) {
601 AERROR <<
"cyber_PyNode_register_message: failed!";
602 Py_INCREF(Py_None);
603 return Py_None;
604 }
605 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
606 if (nullptr == node) {
607 AERROR <<
"cyber_PyNode_register_message:node ptr is null! desc->" << desc;
608 Py_INCREF(Py_None);
609 return Py_None;
610 }
611 std::string desc_str(desc, len);
613 Py_INCREF(Py_None);
614 return Py_None;
615}
616
618 char *channel_name = nullptr;
619 Py_ssize_t len = 0;
620 unsigned char sleep_s = 0;
621 if (!PyArg_ParseTuple(
622 args, const_cast<char *>("s#B:cyber_PyChannelUtils_get_msg_type"),
623 &channel_name, &len, &sleep_s)) {
624 AERROR <<
"cyber_PyChannelUtils_get_msg_type failed!";
626 }
627 std::string channel(channel_name, len);
628 const std::string msg_type =
631}
632
634 PyObject *self, PyObject *args) {
635 char *msgtype = nullptr;
636 char *rawdata = nullptr;
637 Py_ssize_t len = 0;
638 if (!PyArg_ParseTuple(
639 args,
640 const_cast<char *>(
641 "ss#:cyber_PyChannelUtils_get_debugstring_by_msgtype_rawmsgdata"),
642 &msgtype, &rawdata, &len)) {
644 << "cyber_PyChannelUtils_get_debugstring_by_msgtype_rawmsgdata failed!";
646 }
647 std::string raw_data(rawdata, len);
648 const std::string debug_string =
651}
652
653static PyObject *cyber_PyChannelUtils_get_active_channels(PyObject *self,
654 PyObject *args) {
655 unsigned char sleep_s = 0;
656 if (!PyArg_ParseTuple(
657 args,
658 const_cast<char *>("B:cyber_PyChannelUtils_get_active_channels"),
659 &sleep_s)) {
660 AERROR <<
"cyber_PyChannelUtils_get_active_channels failed!";
661 Py_INCREF(Py_None);
662 return Py_None;
663 }
664
665 std::vector<std::string> channel_list =
667 PyObject *pyobj_list = PyList_New(channel_list.size());
668 size_t pos = 0;
669 for (const std::string &channel : channel_list) {
670 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", channel.c_str()));
671 pos++;
672 }
673
674 return pyobj_list;
675}
676
677
678
679
680
681static PyObject *cyber_PyChannelUtils_get_channels_info(PyObject *self,
682 PyObject *args) {
684 PyObject *pyobj_channelinfo_dict = PyDict_New();
685 for (auto &channelinfo : channelsinfo) {
686 std::string channel_name = channelinfo.first;
687 PyObject *bld_name = Py_BuildValue("s", channel_name.c_str());
688 std::vector<std::string> &roleAttr_list = channelinfo.second;
689 PyObject *pyobj_list = PyList_New(roleAttr_list.size());
690
691 size_t pos = 0;
692 for (auto &attr : roleAttr_list) {
694 pos++;
695 }
696 PyDict_SetItem(pyobj_channelinfo_dict, bld_name, pyobj_list);
697 Py_DECREF(bld_name);
698 }
699 return pyobj_channelinfo_dict;
700}
701
703 unsigned char sleep_s = 0;
704 if (!PyArg_ParseTuple(
705 args, const_cast<char *>("B:cyber_PyNodeUtils_get_active_nodes"),
706 &sleep_s)) {
707 AERROR <<
"cyber_PyNodeUtils_get_active_nodes failed!";
708 Py_INCREF(Py_None);
709 return Py_None;
710 }
711
712 std::vector<std::string> nodes_name =
714 PyObject *pyobj_list = PyList_New(nodes_name.size());
715 size_t pos = 0;
716 for (const std::string &name : nodes_name) {
717 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", name.c_str()));
718 pos++;
719 }
720
721 return pyobj_list;
722}
723
725 char *node_name = nullptr;
726 Py_ssize_t len = 0;
727 unsigned char sleep_s = 0;
728 if (!PyArg_ParseTuple(
729 args, const_cast<char *>("s#B:cyber_PyNodeUtils_get_node_attr"),
730 &node_name, &len, &sleep_s)) {
731 AERROR <<
"cyber_PyNodeUtils_get_node_attr failed!";
732 Py_INCREF(Py_None);
733 return Py_None;
734 }
735 std::string name(node_name, len);
736 const std::string node_attr =
739}
740
742 char *node_name = nullptr;
743 Py_ssize_t len = 0;
744 unsigned char sleep_s = 0;
745 if (!PyArg_ParseTuple(
746 args, const_cast<char *>("s#B:cyber_PyNodeUtils_get_readersofnode"),
747 &node_name, &len, &sleep_s)) {
748 AERROR <<
"cyber_PyNodeUtils_get_readersofnode failed!";
749 Py_INCREF(Py_None);
750 return Py_None;
751 }
752 std::string name(node_name, len);
753 std::vector<std::string> readers_channel =
755 PyObject *pyobj_list = PyList_New(readers_channel.size());
756 size_t pos = 0;
757 for (const std::string &channel : readers_channel) {
758 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", channel.c_str()));
759 pos++;
760 }
761
762 return pyobj_list;
763}
764
766 char *node_name = nullptr;
767 Py_ssize_t len = 0;
768 unsigned char sleep_s = 0;
769 if (!PyArg_ParseTuple(
770 args, const_cast<char *>("s#B:cyber_PyNodeUtils_get_writersofnode"),
771 &node_name, &len, &sleep_s)) {
772 AERROR <<
"cyber_PyNodeUtils_get_writersofnode failed!";
773 Py_INCREF(Py_None);
774 return Py_None;
775 }
776 std::string name(node_name, len);
777 std::vector<std::string> writers_channel =
779 PyObject *pyobj_list = PyList_New(writers_channel.size());
780 size_t pos = 0;
781 for (const std::string &channel : writers_channel) {
782 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", channel.c_str()));
783 pos++;
784 }
785
786 return pyobj_list;
787}
788
790 PyObject *args) {
791 unsigned char sleep_s = 0;
792 if (!PyArg_ParseTuple(
793 args,
794 const_cast<char *>("B:cyber_PyServiceUtils_get_active_services"),
795 &sleep_s)) {
796 AERROR <<
"cyber_PyServiceUtils_get_active_services failed!";
797 Py_INCREF(Py_None);
798 return Py_None;
799 }
800
801 std::vector<std::string> services_name =
803 PyObject *pyobj_list = PyList_New(services_name.size());
804 size_t pos = 0;
805 for (const std::string &name : services_name) {
806 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", name.c_str()));
807 pos++;
808 }
809
810 return pyobj_list;
811}
812
814 PyObject *args) {
815 char *srv_name = nullptr;
816 Py_ssize_t len = 0;
817 unsigned char sleep_s = 0;
818 if (!PyArg_ParseTuple(
819 args, const_cast<char *>("s#B:cyber_PyServiceUtils_get_service_attr"),
820 &srv_name, &len, &sleep_s)) {
821 AERROR <<
"cyber_PyServiceUtils_get_service_attr failed!";
822 Py_INCREF(Py_None);
823 return Py_None;
824 }
825 std::string name(srv_name, len);
828}
829
833static PyMethodDef _cyber_methods[] = {
834
835 {"py_init", cyber_py_init, METH_VARARGS, ""},
836 {"py_ok", cyber_py_ok, METH_NOARGS, ""},
837 {"py_shutdown", cyber_py_shutdown, METH_NOARGS, ""},
838 {"py_is_shutdown", cyber_py_is_shutdown, METH_NOARGS, ""},
839 {"py_waitforshutdown", cyber_py_waitforshutdown, METH_NOARGS, ""},
840
841
845
846
851
852
856
860 ""},
863
869 ""},
873
875 METH_VARARGS, ""},
876 {"PyChannelUtils_get_debugstring_by_msgtype_rawmsgdata",
878 ""},
879 {"PyChannelUtils_get_active_channels",
880 cyber_PyChannelUtils_get_active_channels, METH_VARARGS, ""},
881 {"PyChannelUtils_get_channels_info", cyber_PyChannelUtils_get_channels_info,
882 METH_VARARGS, ""},
883
885 METH_VARARGS, ""},
887 ""},
889 METH_VARARGS, ""},
891 METH_VARARGS, ""},
892
893 {"PyServiceUtils_get_active_services",
896 METH_VARARGS, ""},
897
898 {nullptr, nullptr, 0, nullptr}
899};
900
903 static struct PyModuleDef module_def = {
904 PyModuleDef_HEAD_INIT,
905 "_cyber_wrapper",
906 "Cyber module",
907 -1,
908 _cyber_methods,
909 nullptr,
910 nullptr,
911 nullptr,
912 nullptr,
913 };
914
915 return PyModule_Create(&module_def);
916}
Node is the fundamental building block of Cyber RT.
static std::unordered_map< std::string, std::vector< std::string > > get_channels_info(uint8_t sleep_s=2)
static std::string get_msgtype_by_channelname(const std::string &channel_name, uint8_t sleep_s=0)
static std::string get_debugstring_by_msgtype_rawmsgdata(const std::string &msg_type, const std::string &rawmsgdata)
static std::vector< std::string > get_active_channels(uint8_t sleep_s=2)
std::string send_request(std::string request)
static std::vector< std::string > get_readersofnode(const std::string &node_name, uint8_t sleep_s=2)
static std::vector< std::string > get_writersofnode(const std::string &node_name, uint8_t sleep_s=2)
static std::string get_node_attr(const std::string &node_name, uint8_t sleep_s=2)
static std::vector< std::string > get_active_nodes(uint8_t sleep_s=2)
PyReader * create_reader(const std::string &channel, const std::string &type)
PyService * create_service(const std::string &service, const std::string &type)
PyWriter * create_writer(const std::string &channel, const std::string &type, uint32_t qos_depth=1)
PyClient * create_client(const std::string &service, const std::string &type)
void register_message(const std::string &desc)
std::string read(bool wait=false)
void register_func(int(*func)(const char *))
static std::vector< std::string > get_active_services(uint8_t sleep_s=2)
static std::string get_service_attr(const std::string &service_name, uint8_t sleep_s=2)
void register_func(int(*func)(const char *))
int write(const std::string &data)
int write(const std::string &data)
void py_waitforshutdown()
bool py_init(const std::string &module_name)
PyObject * cyber_PyChannelUtils_get_msg_type(PyObject *self, PyObject *args)
PyObject * cyber_PyReader_read(PyObject *self, PyObject *args)
PyObject * cyber_PyNodeUtils_get_node_attr(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyReader(PyObject *self, PyObject *args)
PyObject * cyber_PyServiceUtils_get_active_services(PyObject *self, PyObject *args)
PyObject * cyber_PyNode_create_client(PyObject *self, PyObject *args)
#define PYOBJECT_NULL_STRING
PyObject * cyber_PyNodeUtils_get_active_nodes(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyClient(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyWriter(PyObject *self, PyObject *args)
PyMODINIT_FUNC PyInit__cyber_wrapper(void)
Init function of this module
PyObject * cyber_new_PyWriter(PyObject *self, PyObject *args)
PyObject * cyber_new_PyClient(PyObject *self, PyObject *args)
PyObject * cyber_PyService_register_func(PyObject *self, PyObject *args)
PyObject * cyber_PyWriter_write(PyObject *self, PyObject *args)
PyObject * cyber_PyNodeUtils_get_writersofnode(PyObject *self, PyObject *args)
PyObject * cyber_PyNode_create_service(PyObject *self, PyObject *args)
T PyObjectToPtr(PyObject *pyobj, const std::string &type_ptr)
PyObject * cyber_delete_PyNode(PyObject *self, PyObject *args)
#define C_STR_TO_PY_BYTES(cstr)
PyObject * cyber_PyService_write(PyObject *self, PyObject *args)
PyObject * cyber_PyChannelUtils_get_debugstring_by_msgtype_rawmsgdata(PyObject *self, PyObject *args)
PyObject * cyber_new_PyReader(PyObject *self, PyObject *args)
PyObject * cyber_new_PyNode(PyObject *self, PyObject *args)
PyObject * cyber_PyReader_register_func(PyObject *self, PyObject *args)
PyObject * cyber_PyClient_send_request(PyObject *self, PyObject *args)
PyObject * cyber_new_PyService(PyObject *self, PyObject *args)
PyObject * cyber_PyNodeUtils_get_readersofnode(PyObject *self, PyObject *args)
PyObject * cyber_PyNode_shutdown(PyObject *self, PyObject *args)
PyObject * cyber_PyService_read(PyObject *self, PyObject *args)
PyObject * cyber_PyNode_create_writer(PyObject *self, PyObject *args)
PyObject * cyber_PyServiceUtils_get_service_attr(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyService(PyObject *self, PyObject *args)
PyObject * cyber_PyNode_register_message(PyObject *self, PyObject *args)
PyObject * cyber_PyNode_create_reader(PyObject *self, PyObject *args)