1 #ifndef __lcm_cpp_hpp__
2 #define __lcm_cpp_hpp__
4 #ifndef LCM_CXX_11_ENABLED
5 #if __cplusplus >= 201103L
6 #define LCM_CXX_11_ENABLED 1
8 #define LCM_CXX_11_ENABLED 0
17 #if LCM_CXX_11_ENABLED
54 inline LCM(std::string lcm_url =
"");
80 inline bool good()
const;
91 inline int publish(
const std::string &channel,
const void *data,
unsigned int datalen);
104 template <
class MessageType>
105 inline int publish(
const std::string &channel,
const MessageType *msg);
198 template <
class MessageType,
class MessageHandlerClass>
200 void (MessageHandlerClass::*handlerMethod)(
const ReceiveBuffer *rbuf,
201 const std::string &channel,
202 const MessageType *msg),
203 MessageHandlerClass *handler);
252 template <
class MessageHandlerClass>
254 void (MessageHandlerClass::*handlerMethod)(
const ReceiveBuffer *rbuf,
255 const std::string &channel),
256 MessageHandlerClass *handler);
316 template <
class MessageType,
class ContextClass>
319 const std::string &channel,
320 const MessageType *msg, ContextClass context),
321 ContextClass context);
363 template <
class ContextClass>
366 const std::string &channel,
367 ContextClass context),
368 ContextClass context);
370 #if LCM_CXX_11_ENABLED
374 template <
class MessageType>
375 using HandlerFunction = std::function<void(
const ReceiveBuffer *rbuf,
376 const std::string &channel,
const MessageType *msg)>;
425 template <
class MessageType>
462 std::vector<Subscription *> subscriptions;
589 inline LogFile(
const std::string &path,
const std::string &mode);
599 inline bool good()
const;
649 lcm_eventlog_t *eventlog;
650 lcm_eventlog_event_t *last_event;
657 #define __lcm_cpp_impl_ok__
658 #include "lcm-cpp-impl.hpp"
659 #undef __lcm_cpp_impl_ok__
bool good() const
Checks if initialization succeeded during object construction.
int setQueueCapacity(int num_messages)
Adjusts the maximum number of received messages that can be queued up for this subscription.
FILE * getFilePtr()
retrives the underlying FILE* wrapped by this class.
Subscription * subscribeFunction(const std::string &channel, void(*handler)(const ReceiveBuffer *rbuf, const std::string &channel, const MessageType *msg, ContextClass context), ContextClass context)
Subscribe a function callback to a channel, with automatic message decoding.
int publish(const std::string &channel, const void *data, unsigned int datalen)
Publishes a raw data message.
const LogEvent * readNextEvent()
int getFileno()
Returns a file descriptor or socket that can be used with select(), poll(), or other event loops for ...
Read and write LCM log files.
Definition: lcm-cpp.hpp:580
lcm_t * getUnderlyingLCM()
retrives the lcm_t C data structure wrapped by this class.
int handleTimeout(int timeout_millis)
Waits for and dispatches messages, with a timeout.
Represents a channel subscription, and can be used to unsubscribe and set options.
Definition: lcm-cpp.hpp:499
Subscription * subscribe(const std::string &channel, void(MessageHandlerClass::*handlerMethod)(const ReceiveBuffer *rbuf, const std::string &channel, const MessageType *msg), MessageHandlerClass *handler)
Subscribes a callback method of an object to a channel, with automatic message decoding.
struct _lcm_subscription_t lcm_subscription_t
Definition: lcm.h:55
Stores the raw bytes and timestamp of a received message.
Definition: lcm-cpp.hpp:470
void * data
Definition: lcm-cpp.hpp:568
uint32_t data_size
Definition: lcm-cpp.hpp:478
int64_t recv_utime
Definition: lcm-cpp.hpp:483
int getQueueSize() const
Query the current number of unhandled messages queued up for this subscription.
LogFile(const std::string &path, const std::string &mode)
LCM(std::string lcm_url="")
Constructor.
std::string channel
Definition: lcm-cpp.hpp:560
int seekToTimestamp(int64_t timestamp)
int unsubscribe(Subscription *subscription)
Unsubscribes a message handler.
Core communications class for the C++ API.
Definition: lcm-cpp.hpp:43
int handle()
Waits for and dispatches messages.
void * data
Definition: lcm-cpp.hpp:474
int64_t timestamp
Definition: lcm-cpp.hpp:556
lcm_subscription_t * c_subs
Definition: lcm-cpp.hpp:527
int writeEvent(LogEvent *event)
int64_t eventnum
Definition: lcm-cpp.hpp:551
struct _lcm_t lcm_t
Definition: lcm.h:50
int32_t datalen
Definition: lcm-cpp.hpp:564
Represents a single event (message) in a log file.
Definition: lcm-cpp.hpp:546