24 #include <arpa/inet.h>
25 #include <blackboard/blackboard.h>
26 #include <blackboard/net/interface_listener.h>
27 #include <blackboard/net/messages.h>
28 #include <interface/interface.h>
29 #include <logging/liblogger.h>
30 #include <netcomm/fawkes/component_ids.h>
31 #include <netcomm/fawkes/hub.h>
32 #include <netcomm/fawkes/message.h>
54 Interface * interface,
55 FawkesNetworkHub *hub,
57 : BlackBoardInterfaceListener(
"NetIL/%s", interface->uid())
62 if (interface->is_writer()) {
66 blackboard_ = blackboard;
67 interface_ = interface;
86 size_t payload_size =
sizeof(
bb_idata_msg_t) + interface->datasize();
87 void * payload = malloc(payload_size);
89 dm->
serial = htonl(interface->serial());
90 dm->
data_size = htonl(interface->datasize());
91 memcpy((
char *)payload +
sizeof(
bb_idata_msg_t), interface->datachunk(), interface->datasize());
94 fnh_->send(clid_, FAWKES_CID_BLACKBOARD, MSG_BB_DATA_CHANGED, payload, payload_size);
103 Message * message)
throw()
106 size_t payload_size =
sizeof(bb_imessage_msg_t) + message->datasize();
107 void * payload = calloc(1, payload_size);
109 dm->
serial = htonl(interface->serial());
110 strncpy(dm->
msg_type, message->type(), INTERFACE_MESSAGE_TYPE_SIZE_ - 1);
111 dm->
data_size = htonl(message->datasize());
112 dm->
msgid = htonl(message->id());
113 dm->
hops = htonl(message->hops());
114 memcpy((
char *)payload +
sizeof(
bb_imessage_msg_t), message->datachunk(), message->datasize());
117 fnh_->send(clid_, FAWKES_CID_BLACKBOARD, MSG_BB_INTERFACE_MESSAGE, payload, payload_size);
128 BlackBoardNetHandlerInterfaceListener::send_event_serial(Interface * interface,
130 unsigned int event_serial)
132 bb_ieventserial_msg_t *esm = (bb_ieventserial_msg_t *)malloc(
sizeof(bb_ieventserial_msg_t));
133 esm->serial = htonl(interface->serial());
134 esm->event_serial = htonl(event_serial);
137 fnh_->
send(clid_, FAWKES_CID_BLACKBOARD, msg_id, esm,
sizeof(bb_ieventserial_msg_t));
138 }
catch (Exception &e) {
146 Interface * interface,
147 unsigned int instance_serial)
throw()
149 send_event_serial(interface, MSG_BB_WRITER_ADDED, instance_serial);
155 unsigned int instance_serial)
throw()
157 send_event_serial(interface, MSG_BB_WRITER_REMOVED, instance_serial);
163 unsigned int instance_serial)
throw()
165 send_event_serial(interface, MSG_BB_READER_ADDED, instance_serial);
171 unsigned int instance_serial)
throw()
173 send_event_serial(interface, MSG_BB_READER_REMOVED, instance_serial);