4 from pingList
import IP2PING
7 from ros_monitoring.msg
import SignalInformation, Info_ping
10 from tcppinglib
import async_tcpping, models
17 rospy.init_node(
'getConnectionStatus', anonymous=
False)
18 rospy.loginfo(
"Get signal topic started")
21 self.
message_pub = rospy.Publisher(
"connectionStatus", SignalInformation, queue_size=10)
22 except Exception
as e:
23 rospy.logerr(
"Failure to create publisher")
24 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
28 self.
loop = asyncio.get_event_loop()
30 rospy.logerr(
"Failure to asynchronous loop")
31 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
42 for i
in range(0,len(self.
ip_list)):
44 self.
ip_list[i].update({
'_id': i})
47 rospy.loginfo(
"Ping to: " + self.
ip_list[i][
'ip'] +
':' + str(self.
ip_list[i][
'port']))
49 rospy.logerr(
"Failure to create the global lists")
50 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
54 asyncio.run(self.
main())
56 rospy.logerr(
"Error on launch task asynchronously")
57 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
63 async
def ping(self, ip_dict: dict):
66 aping = await async_tcpping(
67 address=ip_dict[
'ip'],
69 timeout=ip_dict[
'timeout'],
70 count=ip_dict[
'count'],
71 interval=ip_dict[
'interval'])
74 except Exception
as e:
75 rospy.logerr(
"Error on ping to " + ip_dict[
'ip'] +
':' + str(ip_dict[
'port']))
76 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
79 await asyncio.sleep(delay=ip_dict[
'interval'])
91 _msg.is_alive = int(ping.is_alive)
92 _msg.packets_sent = int(ping.packets_sent)
93 _msg.packets_loss = int(ping.packet_loss)
94 _msg.packets_received = int(ping.packets_received)
96 _msg.rtt_max = ping.max_rtt
97 _msg.rtt_min = ping.min_rtt
98 _msg.rtt_avg = ping.avg_rtt
99 _msg.ip_target = ping.ip_address
102 except Exception
as e:
103 rospy.logerr(
"Error on convert ping to message: " + ping.ip_address +
':' + ping.port)
104 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
110 while not rospy.is_shutdown():
113 msg = SignalInformation()
115 list_msg = [message[
'msg']
for message
in self.
msg_list]
119 await asyncio.sleep(1)
121 except Exception
as e:
122 rospy.logerr(
"Error on convert ROS message")
123 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
128 except Exception
as e:
129 rospy.logerr(
"Error on publish the message")
130 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
132 await asyncio.sleep(0.5)
137 while not rospy.is_shutdown():
144 self.
ping_tasks[item[
'_id']] = asyncio.ensure_future(self.
ping(ip_dict=item))
147 except Exception
as e:
148 rospy.logerr(
"Error create the ping task to " + item[
'ip'] +
':' + str(item[
'port']))
149 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
152 await asyncio.sleep(0.1)
162 rospy.rospy.loginfo(
"Interrupted asynchronous tasks")
164 if __name__ ==
'__main__':
167 except rospy.ROSInterruptException: