24 #include <core/exceptions/software.h> 25 #include <core/threading/mutex.h> 26 #include <core/threading/thread.h> 27 #include <interface/interface.h> 28 #include <interface/message.h> 29 #include <utils/time/time.h> 64 fieldinfo_list_ = NULL;
74 time_enqueued_ =
new Time();
76 _transmit_via_iface = NULL;
77 sender_interface_instance_serial = 0;
78 recipient_interface_mem_serial = 0;
81 if (sender_name !=
"") {
82 _sender_thread_name = strdup(sender_name.c_str());
84 _sender_thread_name = strdup(
"Unknown");
96 num_fields_ = mesg.num_fields_;
101 _type = strdup(mesg._type);
102 time_enqueued_ =
new Time(mesg.time_enqueued_);
104 _transmit_via_iface = NULL;
105 sender_interface_instance_serial = 0;
106 recipient_interface_mem_serial = 0;
116 *info_dest = new_info;
118 info_dest = &((*info_dest)->next);
119 info_src = info_src->
next;
124 _sender_thread_name = strdup(t->
name());
126 _sender_thread_name = strdup(
"Unknown");
138 num_fields_ = mesg->num_fields_;
143 _type = strdup(mesg->_type);
144 _transmit_via_iface = NULL;
145 sender_interface_instance_serial = 0;
146 recipient_interface_mem_serial = 0;
147 time_enqueued_ =
new Time(mesg->time_enqueued_);
157 *info_dest = new_info;
159 info_dest = &((*info_dest)->next);
160 info_src = info_src->
next;
165 _sender_thread_name = strdup(t->
name());
167 _sender_thread_name = strdup(
"Unknown");
174 free(_sender_thread_name);
176 delete time_enqueued_;
180 fieldinfo_list_ = fieldinfo_list_->
next;
182 infol = fieldinfo_list_;
210 message_id_ = message_id;
226 time_enqueued_->
stamp();
227 long sec = 0, usec = 0;
254 return time_enqueued_;
263 return recipient_interface_mem_serial;
319 return _sender_thread_name;
338 _transmit_via_iface = iface;
339 _sender_id = iface->
serial();
340 recipient_interface_mem_serial = iface->
mem_serial();
349 return _transmit_via_iface;
414 const char * enumtype,
422 newinfo->
name = name;
424 newinfo->
value = value;
426 newinfo->
next = NULL;
430 fieldinfo_list_ = newinfo;
433 while (infol->
next != NULL) {
436 infol->
next = newinfo;
Interface field iterator.
const char * sender_thread_name() const
Get sender of message.
const Time * time_enqueued() const
Get time when message was enqueued.
void * data_ptr
Pointer to memory that contains local data.
Interface * interface() const
Get transmitting interface.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
unsigned int id() const
Get message ID.
void mark_enqueued()
Mark message as being enqueued.
static std::string current_thread_name()
Get the name of the current thread.
void get_timestamp(long &sec, long &usec) const
Get time stamp.
Interface field info list.
Fawkes library namespace.
const char * name
Name of this field.
Timestamp data, must be present and first entries for each interface data structs!...
interface_fieldinfo_t * next
next field, NULL if last
A class for handling time.
Thread class encapsulation of pthreads.
Base class for all Fawkes BlackBoard interfaces.
bool enqueued() const
Check is message has been enqueued.
InterfaceFieldIterator fields_end()
Invalid iterator.
static Thread * current_thread_noexc()
Similar to current_thread, but does never throw an exception.
const void * datachunk() const
Get pointer to data.
message_data_ts_t * data_ts
data timestamp aliasing pointer
void * value
Current value of this field.
unsigned int data_size
Size of memory needed to hold all data.
unsigned int mem_serial() const
Get memory serial of interface.
const interface_enum_map_t * enum_map
Map of possible enum values.
Message(const char *type)
Constructor.
unsigned int sender_id() const
Get ID of sender.
virtual ~Message()
Destructor.
unsigned short serial() const
Get instance serial of interface.
void set_from_chunk(const void *chunk)
Set from raw data chunk.
unsigned int hops() const
Get number of hops.
interface_fieldtype_t type
type of this field
int64_t timestamp_usec
additional time microseconds
const char * name() const
Get name of thread.
size_t length
Length of field (array, string)
unsigned int recipient() const
Get recipient memory serial.
InterfaceFieldIterator fields()
Get iterator over all fields of this interface instance.
void set_time(const timeval *tv)
Sets the time.
int64_t timestamp_sec
time in seconds since Unix epoch
const char * enumtype
text representation of enum type
unsigned int datasize() const
Get size of data.
unsigned int num_fields() const
Get the number of fields in the message.
Time & stamp()
Set this time to the current time.
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=0, const interface_enum_map_t *enum_map=0)
Add an entry to the info list.
void set_hops(unsigned int hops)
Set number of hops.
interface_fieldtype_t
Interface field type.
std::map< int, std::string > interface_enum_map_t
Map of enum integer to string values.
const char * type() const
Get message type.
Message & operator=(const Message &m)
Assign this message to given message.
void set_id(unsigned int message_id)
Set message ID.
virtual Message * clone() const
Clone this message.