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 <<
" "
92 << "pyobj: " << pyobj;
93 }
94 return obj_ptr;
95}
96
98 char *channel_name = nullptr;
100 uint32_t qos_depth = 1;
101
102 PyObject *node_pyobj = nullptr;
103 if (!PyArg_ParseTuple(args, const_cast<char *>("ssIO:new_PyWriter"),
104 &channel_name, &
data_type, &qos_depth, &node_pyobj)) {
105 Py_INCREF(Py_None);
106 return Py_None;
107 }
108
109 Node *node =
reinterpret_cast<Node *
>(
110 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
111 if (nullptr == node) {
113 Py_INCREF(Py_None);
114 return Py_None;
115 }
116
118 new PyWriter((std::string
const &)*channel_name,
119 (std::string
const &)*
data_type, qos_depth, node);
120 PyObject *pyobj_writer =
121 PyCapsule_New(writer, "apollo_cyber_pywriter", nullptr);
122 return pyobj_writer;
123}
124
126 PyObject *writer_py = nullptr;
127 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyWriter"),
128 &writer_py)) {
129 Py_INCREF(Py_None);
130 return Py_None;
131 }
132
134 PyCapsule_GetPointer(writer_py, "apollo_cyber_pywriter"));
135 delete writer;
136 Py_INCREF(Py_None);
137 return Py_None;
138}
139
141 PyObject *pyobj_writer = nullptr;
142 Py_buffer buffer;
143
144 if (!PyArg_ParseTuple(args, const_cast<char *>("Oy*:cyber_PyWriter_write"),
145 &pyobj_writer, &buffer)) {
146 AERROR <<
"cyber_PyWriter_write:cyber_PyWriter_write failed!";
147 PyBuffer_Release(&buffer);
149 }
150
152 PyObjectToPtr<PyWriter *>(pyobj_writer, "apollo_cyber_pywriter");
153
154 if (nullptr == writer) {
155 AERROR <<
"cyber_PyWriter_write:writer ptr is null!";
156 PyBuffer_Release(&buffer);
158 }
159
160 std::string data_str(
161 const_cast<const char *>(static_cast<char *>(buffer.buf)), buffer.len);
162 int ret = writer->
write(data_str);
163 PyBuffer_Release(&buffer);
165}
166
168 char *channel_name = nullptr;
170 PyObject *node_pyobj = nullptr;
171 if (!PyArg_ParseTuple(args, const_cast<char *>("ssO:new_PyReader"),
172 &channel_name, &
data_type, &node_pyobj)) {
173 Py_INCREF(Py_None);
174 return Py_None;
175 }
176
177 Node *node =
reinterpret_cast<Node *
>(
178 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
179 if (!node) {
181 Py_INCREF(Py_None);
182 return Py_None;
183 }
184
187 PyObject *pyobj_reader =
188 PyCapsule_New(reader, "apollo_cyber_pyreader", nullptr);
189 return pyobj_reader;
190}
191
193 PyObject *reader_py = nullptr;
194 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyReader"),
195 &reader_py)) {
196 Py_INCREF(Py_None);
197 return Py_None;
198 }
199
201 PyCapsule_GetPointer(reader_py, "apollo_cyber_pyreader"));
202 delete reader;
203 Py_INCREF(Py_None);
204 return Py_None;
205}
206
208 PyObject *pyobj_reader = nullptr;
209 PyObject *pyobj_iswait = nullptr;
210
211 if (!PyArg_ParseTuple(args, const_cast<char *>("OO:cyber_PyReader_read"),
212 &pyobj_reader, &pyobj_iswait)) {
213 AERROR <<
"cyber_PyReader_read:PyArg_ParseTuple failed!";
214 Py_INCREF(Py_None);
215 return Py_None;
216 }
218 PyObjectToPtr<PyReader *>(pyobj_reader, "apollo_cyber_pyreader");
219 if (nullptr == reader) {
220 AERROR <<
"cyber_PyReader_read:PyReader ptr is null!";
221 Py_INCREF(Py_None);
222 return Py_None;
223 }
224
225 int r = PyObject_IsTrue(pyobj_iswait);
226 if (r == -1) {
227 AERROR <<
"cyber_PyReader_read:pyobj_iswait is error!";
228 Py_INCREF(Py_None);
229 return Py_None;
230 }
231
232 bool wait = (r == 1);
233
234 const std::string reader_ret = reader->
read(wait);
236}
237
239 PyObject *pyobj_regist_fun = nullptr;
240 PyObject *pyobj_reader = nullptr;
241
242 int (*callback_fun)(char const *) = (int (*)(char const *))0;
243
244 if (!PyArg_ParseTuple(args, const_cast<char *>("OO:PyReader_register_func"),
245 &pyobj_reader, &pyobj_regist_fun)) {
246 Py_INCREF(Py_None);
247 return Py_None;
248 }
249
251 PyObjectToPtr<PyReader *>(pyobj_reader, "apollo_cyber_pyreader");
252 callback_fun = (int (*)(
const char *i))
PyInt_AsLong(pyobj_regist_fun);
253 if (reader) {
254 AINFO <<
"reader regist fun";
256 }
257
258 Py_INCREF(Py_None);
259 return Py_None;
260}
261
263 char *channel_name = nullptr;
265 PyObject *node_pyobj = nullptr;
266 if (!PyArg_ParseTuple(args, const_cast<char *>("ssO:new_PyClient"),
267 &channel_name, &
data_type, &node_pyobj)) {
268 Py_INCREF(Py_None);
269 return Py_None;
270 }
271
272 Node *node =
reinterpret_cast<Node *
>(
273 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
274 if (!node) {
276 Py_INCREF(Py_None);
277 return Py_None;
278 }
279
282 PyObject *pyobj_client =
283 PyCapsule_New(client, "apollo_cyber_pyclient", nullptr);
284 return pyobj_client;
285}
286
288 PyObject *client_py = nullptr;
289 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyClient"),
290 &client_py)) {
291 Py_INCREF(Py_None);
292 return Py_None;
293 }
294
296 PyCapsule_GetPointer(client_py, "apollo_cyber_pyclient"));
297 delete client;
298 Py_INCREF(Py_None);
299 return Py_None;
300}
301
303 PyObject *pyobj_client = nullptr;
304 Py_buffer buffer;
305
306 if (!PyArg_ParseTuple(args, const_cast<char *>("Oy*:PyClient_send_request"),
307 &pyobj_client, &buffer)) {
308 AERROR <<
"cyber_PyClient_send_request:PyArg_ParseTuple failed!";
309 PyBuffer_Release(&buffer);
311 }
312
314 PyObjectToPtr<PyClient *>(pyobj_client, "apollo_cyber_pyclient");
315
316 if (nullptr == client) {
317 AERROR <<
"cyber_PyClient_send_request:client ptr is null!";
318 PyBuffer_Release(&buffer);
320 }
321
322 std::string data_str(
323 const_cast<const char *>(static_cast<char *>(buffer.buf)), buffer.len);
324 ADEBUG <<
"c++:PyClient_send_request data->[ " << data_str <<
"]";
325 const std::string response_str =
327 ADEBUG <<
"c++:response data->[ " << response_str <<
"]";
328 PyBuffer_Release(&buffer);
330}
331
333 char *channel_name = nullptr;
335 PyObject *node_pyobj = nullptr;
336 if (!PyArg_ParseTuple(args, const_cast<char *>("ssO:new_PyService"),
337 &channel_name, &
data_type, &node_pyobj)) {
338 Py_INCREF(Py_None);
339 return Py_None;
340 }
341
342 Node *node =
reinterpret_cast<Node *
>(
343 PyCapsule_GetPointer(node_pyobj, "apollo_cyber_pynode"));
344 if (!node) {
346 Py_INCREF(Py_None);
347 return Py_None;
348 }
349
352 PyObject *pyobj_service =
353 PyCapsule_New(service, "apollo_cyber_pyservice", nullptr);
354 return pyobj_service;
355}
356
358 PyObject *pyobj_service = nullptr;
359 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyService"),
360 &pyobj_service)) {
361 Py_INCREF(Py_None);
362 return Py_None;
363 }
364
366 PyCapsule_GetPointer(pyobj_service, "apollo_cyber_pyservice"));
367 delete service;
368 Py_INCREF(Py_None);
369 return Py_None;
370}
371
373 PyObject *pyobj_regist_fun = nullptr;
374 PyObject *pyobj_service = nullptr;
375
376 int (*callback_fun)(char const *) = (int (*)(char const *))0;
377
378 if (!PyArg_ParseTuple(args, const_cast<char *>("OO:PyService_register_func"),
379 &pyobj_service, &pyobj_regist_fun)) {
380 Py_INCREF(Py_None);
381 return Py_None;
382 }
383
385 PyObjectToPtr<PyService *>(pyobj_service, "apollo_cyber_pyservice");
386 callback_fun = (int (*)(
const char *i))
PyInt_AsLong(pyobj_regist_fun);
387 if (service) {
388 AINFO <<
"service regist fun";
390 }
391
392 Py_INCREF(Py_None);
393 return Py_None;
394}
395
397 PyObject *pyobj_service = nullptr;
398 if (!PyArg_ParseTuple(args, const_cast<char *>("O:cyber_PyService_read"),
399 &pyobj_service)) {
400 AERROR <<
"cyber_PyService_read:PyArg_ParseTuple failed!";
402 }
404 PyObjectToPtr<PyService *>(pyobj_service, "apollo_cyber_pyservice");
405 if (nullptr == service) {
406 AERROR <<
"cyber_PyService_read:service ptr is null!";
408 }
409
410 const std::string reader_ret = service->
read();
411 ADEBUG <<
"c++:PyService_read -> " << reader_ret;
413}
414
416 PyObject *pyobj_service = nullptr;
417 Py_buffer buffer;
418
419 if (!PyArg_ParseTuple(args, const_cast<char *>("Oy*:cyber_PyService_write"),
420 &pyobj_service, &buffer)) {
421 AERROR <<
"cyber_PyService_write:PyArg_ParseTuple failed!";
422 PyBuffer_Release(&buffer);
424 }
425
427 PyObjectToPtr<PyService *>(pyobj_service, "apollo_cyber_pyservice");
428
429 if (nullptr == service) {
430 AERROR <<
"cyber_PyService_write:writer ptr is null!";
431 PyBuffer_Release(&buffer);
433 }
434
435 std::string data_str(
436 const_cast<const char *>(static_cast<char *>(buffer.buf)), buffer.len);
437 ADEBUG <<
"c++:PyService_write data->[ " << data_str <<
"]";
438 int ret = service->
write((std::string
const &)data_str);
439 PyBuffer_Release(&buffer);
441}
442
444 char *node_name = nullptr;
445 if (!PyArg_ParseTuple(args, const_cast<char *>("s:new_PyNode"), &node_name)) {
446 Py_INCREF(Py_None);
447 return Py_None;
448 }
449
450 PyNode *node =
new PyNode((std::string
const &)node_name);
451 PyObject *pyobj_node = PyCapsule_New(node, "apollo_cyber_pynode", nullptr);
452 return pyobj_node;
453}
454
456 PyObject *pyobj_node = nullptr;
457 if (!PyArg_ParseTuple(args, const_cast<char *>("O:delete_PyNode"),
458 &pyobj_node)) {
459 Py_INCREF(Py_None);
460 return Py_None;
461 }
462
464 PyCapsule_GetPointer(pyobj_node, "apollo_cyber_pynode"));
465 delete node;
466 Py_INCREF(Py_None);
467 return Py_None;
468}
469
471 PyObject *pyobj_node = nullptr;
472 char *channel_name = nullptr;
473 char *type_name = nullptr;
474 uint32_t qos_depth = 1;
475
476 if (!PyArg_ParseTuple(args, const_cast<char *>("OssI:PyNode_create_writer"),
477 &pyobj_node, &channel_name, &type_name, &qos_depth)) {
478 AERROR <<
"cyber_PyNode_create_writer:PyArg_ParseTuple failed!";
479 Py_INCREF(Py_None);
480 return Py_None;
481 }
482
483 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
484 if (nullptr == node) {
485 AERROR <<
"cyber_PyNode_create_writer:node ptr is null!";
486 Py_INCREF(Py_None);
487 return Py_None;
488 }
489
492 (std::string const &)type_name, qos_depth)));
493
494 if (nullptr == writer) {
495 AERROR <<
"cyber_PyNode_create_writer:writer is null!";
496 Py_INCREF(Py_None);
497 return Py_None;
498 }
499 PyObject *pyobj_writer =
500 PyCapsule_New(writer, "apollo_cyber_pywriter", nullptr);
501 return pyobj_writer;
502}
503
505 char *channel_name = nullptr;
506 char *type_name = nullptr;
507 PyObject *pyobj_node = nullptr;
508
509 if (!PyArg_ParseTuple(args, const_cast<char *>("Oss:PyNode_create_reader"),
510 &pyobj_node, &channel_name, &type_name)) {
511 AERROR <<
"PyNode_create_reader:PyArg_ParseTuple failed!";
512 Py_INCREF(Py_None);
513 return Py_None;
514 }
515
516 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
517 if (nullptr == node) {
518 AERROR <<
"PyNode_create_reader:node ptr is null!";
519 Py_INCREF(Py_None);
520 return Py_None;
521 }
522
524 (std::string const &)channel_name, (std::string const &)type_name)));
525 ACHECK(reader) <<
"PyReader is NULL!";
526
527 PyObject *pyobj_reader =
528 PyCapsule_New(reader, "apollo_cyber_pyreader", nullptr);
529 return pyobj_reader;
530}
531
533 char *channel_name = nullptr;
534 char *type_name = nullptr;
535 PyObject *pyobj_node = nullptr;
536
537 if (!PyArg_ParseTuple(args, const_cast<char *>("Oss:PyNode_create_client"),
538 &pyobj_node, &channel_name, &type_name)) {
539 AERROR <<
"PyNode_create_client:PyArg_ParseTuple failed!";
540 Py_INCREF(Py_None);
541 return Py_None;
542 }
543
544 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
545 if (nullptr == node) {
546 AERROR <<
"PyNode_create_client:node ptr is null!";
547 Py_INCREF(Py_None);
548 return Py_None;
549 }
550
552 (std::string const &)channel_name, (std::string const &)type_name)));
553 PyObject *pyobj_client =
554 PyCapsule_New(client, "apollo_cyber_pyclient", nullptr);
555
556 return pyobj_client;
557}
558
560 char *channel_name = nullptr;
561 char *type_name = nullptr;
562 PyObject *pyobj_node = nullptr;
563
564 if (!PyArg_ParseTuple(args,
565 const_cast<char *>("Oss:cyber_PyNode_create_service"),
566 &pyobj_node, &channel_name, &type_name)) {
567 AERROR <<
"cyber_PyNode_create_service:PyArg_ParseTuple failed!";
568 Py_INCREF(Py_None);
569 return Py_None;
570 }
571
572 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
573 if (nullptr == node) {
574 AERROR <<
"cyber_PyNode_create_service:node ptr is null!";
575 Py_INCREF(Py_None);
576 return Py_None;
577 }
578
580 (std::string const &)channel_name, (std::string const &)type_name)));
581 PyObject *pyobj_service =
582 PyCapsule_New(service, "apollo_cyber_pyservice", nullptr);
583 return pyobj_service;
584}
585
587 PyObject *pyobj_node = nullptr;
588
589 if (!PyArg_ParseTuple(args, const_cast<char *>("O:PyNode_shutdown"),
590 &pyobj_node)) {
591 AERROR <<
"cyber_PyNode_shutdown:PyNode_shutdown failed!";
592 Py_INCREF(Py_None);
593 return Py_None;
594 }
595
596 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
597 if (nullptr == node) {
598 AERROR <<
"cyber_PyNode_shutdown:node ptr is null!";
599 Py_INCREF(Py_None);
600 return Py_None;
601 }
603 Py_INCREF(Py_None);
604 return Py_None;
605}
606
608 PyObject *pyobj_node = nullptr;
609 Py_buffer buffer;
610
611 if (!PyArg_ParseTuple(args,
612 const_cast<char *>("Oy*:cyber_PyNode_register_message"),
613 &pyobj_node, &buffer)) {
614 AERROR <<
"cyber_PyNode_register_message: failed!";
615 Py_INCREF(Py_None);
616 PyBuffer_Release(&buffer);
617 return Py_None;
618 }
619 std::string desc_str(
620 const_cast<const char *>(static_cast<char *>(buffer.buf)), buffer.len);
621 PyNode *node = PyObjectToPtr<PyNode *>(pyobj_node,
"apollo_cyber_pynode");
622 if (nullptr == node) {
623 AERROR <<
"cyber_PyNode_register_message:node ptr is null! desc->"
624 << desc_str;
625 Py_INCREF(Py_None);
626 PyBuffer_Release(&buffer);
627 return Py_None;
628 }
630 Py_INCREF(Py_None);
631 PyBuffer_Release(&buffer);
632 return Py_None;
633}
634
636 char *channel_name = nullptr;
637 Py_ssize_t len = 0;
638 unsigned char sleep_s = 0;
639 if (!PyArg_ParseTuple(
640 args, const_cast<char *>("s#B:cyber_PyChannelUtils_get_msg_type"),
641 &channel_name, &len, &sleep_s)) {
642 AERROR <<
"cyber_PyChannelUtils_get_msg_type failed!";
644 }
645 std::string channel(channel_name, len);
646 const std::string msg_type =
649}
650
652 PyObject *self, PyObject *args) {
653 char *msgtype = nullptr;
654 char *rawdata = nullptr;
655 Py_ssize_t len = 0;
656 if (!PyArg_ParseTuple(
657 args,
658 const_cast<char *>(
659 "ss#:cyber_PyChannelUtils_get_debugstring_by_msgtype_rawmsgdata"),
660 &msgtype, &rawdata, &len)) {
662 << "cyber_PyChannelUtils_get_debugstring_by_msgtype_rawmsgdata failed!";
664 }
665 std::string raw_data(rawdata, len);
666 const std::string debug_string =
669}
670
671static PyObject *cyber_PyChannelUtils_get_active_channels(PyObject *self,
672 PyObject *args) {
673 unsigned char sleep_s = 0;
674 if (!PyArg_ParseTuple(
675 args,
676 const_cast<char *>("B:cyber_PyChannelUtils_get_active_channels"),
677 &sleep_s)) {
678 AERROR <<
"cyber_PyChannelUtils_get_active_channels failed!";
679 Py_INCREF(Py_None);
680 return Py_None;
681 }
682
683 std::vector<std::string> channel_list =
685 PyObject *pyobj_list = PyList_New(channel_list.size());
686 size_t pos = 0;
687 for (const std::string &channel : channel_list) {
688 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", channel.c_str()));
689 pos++;
690 }
691
692 return pyobj_list;
693}
694
695
696
697
698
699static PyObject *cyber_PyChannelUtils_get_channels_info(PyObject *self,
700 PyObject *args) {
702 PyObject *pyobj_channelinfo_dict = PyDict_New();
703 for (auto &channelinfo : channelsinfo) {
704 std::string channel_name = channelinfo.first;
705 PyObject *bld_name = Py_BuildValue("s", channel_name.c_str());
706 std::vector<std::string> &roleAttr_list = channelinfo.second;
707 PyObject *pyobj_list = PyList_New(roleAttr_list.size());
708
709 size_t pos = 0;
710 for (auto &attr : roleAttr_list) {
712 pos++;
713 }
714 PyDict_SetItem(pyobj_channelinfo_dict, bld_name, pyobj_list);
715 Py_DECREF(bld_name);
716 }
717 return pyobj_channelinfo_dict;
718}
719
721 unsigned char sleep_s = 0;
722 if (!PyArg_ParseTuple(
723 args, const_cast<char *>("B:cyber_PyNodeUtils_get_active_nodes"),
724 &sleep_s)) {
725 AERROR <<
"cyber_PyNodeUtils_get_active_nodes failed!";
726 Py_INCREF(Py_None);
727 return Py_None;
728 }
729
730 std::vector<std::string> nodes_name =
732 PyObject *pyobj_list = PyList_New(nodes_name.size());
733 size_t pos = 0;
734 for (const std::string &name : nodes_name) {
735 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", name.c_str()));
736 pos++;
737 }
738
739 return pyobj_list;
740}
741
743 char *node_name = nullptr;
744 Py_ssize_t len = 0;
745 unsigned char sleep_s = 0;
746 if (!PyArg_ParseTuple(
747 args, const_cast<char *>("s#B:cyber_PyNodeUtils_get_node_attr"),
748 &node_name, &len, &sleep_s)) {
749 AERROR <<
"cyber_PyNodeUtils_get_node_attr failed!";
750 Py_INCREF(Py_None);
751 return Py_None;
752 }
753 std::string name(node_name, len);
754 const std::string node_attr =
757}
758
760 char *node_name = nullptr;
761 Py_ssize_t len = 0;
762 unsigned char sleep_s = 0;
763 if (!PyArg_ParseTuple(
764 args, const_cast<char *>("s#B:cyber_PyNodeUtils_get_readersofnode"),
765 &node_name, &len, &sleep_s)) {
766 AERROR <<
"cyber_PyNodeUtils_get_readersofnode failed!";
767 Py_INCREF(Py_None);
768 return Py_None;
769 }
770 std::string name(node_name, len);
771 std::vector<std::string> readers_channel =
773 PyObject *pyobj_list = PyList_New(readers_channel.size());
774 size_t pos = 0;
775 for (const std::string &channel : readers_channel) {
776 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", channel.c_str()));
777 pos++;
778 }
779
780 return pyobj_list;
781}
782
784 char *node_name = nullptr;
785 Py_ssize_t len = 0;
786 unsigned char sleep_s = 0;
787 if (!PyArg_ParseTuple(
788 args, const_cast<char *>("s#B:cyber_PyNodeUtils_get_writersofnode"),
789 &node_name, &len, &sleep_s)) {
790 AERROR <<
"cyber_PyNodeUtils_get_writersofnode failed!";
791 Py_INCREF(Py_None);
792 return Py_None;
793 }
794 std::string name(node_name, len);
795 std::vector<std::string> writers_channel =
797 PyObject *pyobj_list = PyList_New(writers_channel.size());
798 size_t pos = 0;
799 for (const std::string &channel : writers_channel) {
800 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", channel.c_str()));
801 pos++;
802 }
803
804 return pyobj_list;
805}
806
808 PyObject *args) {
809 unsigned char sleep_s = 0;
810 if (!PyArg_ParseTuple(
811 args,
812 const_cast<char *>("B:cyber_PyServiceUtils_get_active_services"),
813 &sleep_s)) {
814 AERROR <<
"cyber_PyServiceUtils_get_active_services failed!";
815 Py_INCREF(Py_None);
816 return Py_None;
817 }
818
819 std::vector<std::string> services_name =
821 PyObject *pyobj_list = PyList_New(services_name.size());
822 size_t pos = 0;
823 for (const std::string &name : services_name) {
824 PyList_SetItem(pyobj_list, pos, Py_BuildValue("s", name.c_str()));
825 pos++;
826 }
827
828 return pyobj_list;
829}
830
832 PyObject *args) {
833 char *srv_name = nullptr;
834 Py_ssize_t len = 0;
835 unsigned char sleep_s = 0;
836 if (!PyArg_ParseTuple(
837 args, const_cast<char *>("s#B:cyber_PyServiceUtils_get_service_attr"),
838 &srv_name, &len, &sleep_s)) {
839 AERROR <<
"cyber_PyServiceUtils_get_service_attr failed!";
840 Py_INCREF(Py_None);
841 return Py_None;
842 }
843 std::string name(srv_name, len);
846}
847
851static PyMethodDef _cyber_methods[] = {
852
853 {"py_init", cyber_py_init, METH_VARARGS, ""},
854 {"py_ok", cyber_py_ok, METH_NOARGS, ""},
855 {"py_shutdown", cyber_py_shutdown, METH_NOARGS, ""},
856 {"py_is_shutdown", cyber_py_is_shutdown, METH_NOARGS, ""},
857 {"py_waitforshutdown", cyber_py_waitforshutdown, METH_NOARGS, ""},
858
859
863
864
869
870
874
878 ""},
881
887 ""},
891
893 METH_VARARGS, ""},
894 {"PyChannelUtils_get_debugstring_by_msgtype_rawmsgdata",
896 ""},
897 {"PyChannelUtils_get_active_channels",
898 cyber_PyChannelUtils_get_active_channels, METH_VARARGS, ""},
899 {"PyChannelUtils_get_channels_info", cyber_PyChannelUtils_get_channels_info,
900 METH_VARARGS, ""},
901
903 METH_VARARGS, ""},
905 ""},
907 METH_VARARGS, ""},
909 METH_VARARGS, ""},
910
911 {"PyServiceUtils_get_active_services",
914 METH_VARARGS, ""},
915
916 {nullptr, nullptr, 0, nullptr}
917};
918
921 static struct PyModuleDef module_def = {
922 PyModuleDef_HEAD_INIT,
923 "_cyber_wrapper",
924 "Cyber module",
925 -1,
926 _cyber_methods,
927 nullptr,
928 nullptr,
929 nullptr,
930 nullptr,
931 };
932
933 return PyModule_Create(&module_def);
934}
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)