YARP
Yet Another Robot Platform
yarp::os::Subscriber< T > Class Template Reference

A port specialized for reading data of a constant type published on a topic. More...

#include <yarp/os/Subscriber.h>

+ Inheritance diagram for yarp::os::Subscriber< T >:

Detailed Description

template<class T>
class yarp::os::Subscriber< T >

A port specialized for reading data of a constant type published on a topic.

See also
yarp::os::Publisher

Definition at line 18 of file Subscriber.h.

Public Member Functions

 Subscriber (const std::string &name="")
 Constructor. More...
 
virtual ~Subscriber ()
 Destructor. More...
 
bool topic (const std::string &name)
 Set topic to subscribe to. More...
 
virtual bool open (const std::string &name) override
 Start port operation, with a specific name, with automatically-chosen network parameters. More...
 
virtual bool open (const Contact &contact, bool registerName=true) override
 Start port operation with user-chosen network parameters. More...
 
virtual void close () override
 Stop port activity. More...
 
virtual void interrupt () override
 Interrupt any current reads or writes attached to the port. More...
 
virtual void resume () override
 Put the port back in an operative state after interrupt() has been called. More...
 
void setReader (PortReader &reader) override
 Set an external reader for port data. More...
 
T * read (bool shouldWait=true)
 Read a message from the port. More...
 
virtual PortasPort () override
 Get the concrete Port being used for communication. More...
 
virtual const PortasPort () const override
 Get the concrete Port being used for communication, const version. More...
 
virtual void onRead (T &datum) override
 Callback method. More...
 
void useCallback (TypedReaderCallback< T > &callback)
 
void useCallback ()
 
void disableCallback ()
 
void setStrict (bool strict=true)
 
- Public Member Functions inherited from yarp::os::AbstractContactable
virtual bool addOutput (const std::string &name) override
 Add an output connection to the specified port. More...
 
virtual bool addOutput (const std::string &name, const std::string &carrier) override
 Add an output connection to the specified port, using a specified carrier. More...
 
virtual bool addOutput (const Contact &contact) override
 Add an output connection to the specified port, using specified network parameters. More...
 
virtual Contact where () const override
 Returns information about how this port can be reached. More...
 
virtual std::string getName () const override
 Get name of port. More...
 
virtual bool setEnvelope (PortWriter &envelope) override
 Set an envelope (e.g., a timestamp) to the next message which will be sent. More...
 
virtual bool getEnvelope (PortReader &envelope) override
 Get the envelope information (e.g., a timestamp) from the last message received on the port. More...
 
virtual int getInputCount () override
 Determine how many connections are arriving into this port. More...
 
virtual int getOutputCount () override
 Determine how many output connections this port has. More...
 
virtual void getReport (PortReport &reporter) override
 Get information on the state of the port - connections etc. More...
 
virtual void setReporter (PortReport &reporter) override
 Set a callback to be called upon any future connections and disconnections to/from the port. More...
 
virtual void resetReporter () override
 Remove the callback which is called upon any future connections and disconnections to/from the port. More...
 
virtual bool isWriting () override
 Report whether the port is currently writing data. More...
 
virtual void setAdminReader (PortReader &reader) override
 Set an external reader for unrecognized administrative port messages. More...
 
virtual void setInputMode (bool expectInput) override
 Configure the port to allow or forbid inputs. More...
 
virtual void setOutputMode (bool expectOutput) override
 Configure the port to allow or forbid outputs. More...
 
virtual void setRpcMode (bool expectRpc) override
 Configure the port to be RPC only. More...
 
virtual Type getType () override
 Get the type of data the port has committed to send/receive. More...
 
virtual void promiseType (const Type &typ) override
 Commit the port to a particular type of data. More...
 
virtual PropertyacquireProperties (bool readOnly) override
 Access unstructured port properties. More...
 
virtual void releaseProperties (Property *prop) override
 End access unstructured port properties. More...
 
virtual bool write (const PortWriter &writer, const PortWriter *callback=nullptr) const override
 Write an object to the port. More...
 
virtual bool write (const PortWriter &writer, PortReader &reader, const PortWriter *callback=nullptr) const override
 Write an object to the port, then expect one back. More...
 
virtual bool read (PortReader &reader, bool willReply=false) override
 Read an object from the port. More...
 
virtual bool reply (PortWriter &writer) override
 Send an object as a reply to an object read from the port. More...
 
virtual bool replyAndDrop (PortWriter &writer) override
 Same as reply(), but closes connection after reply. More...
 
virtual void includeNodeInName (bool flag) override
 Choose whether to prepend a node name (if one is available) to the port's name. More...
 
virtual bool setCallbackLock (yarp::os::Mutex *mutex=nullptr) override
 Add a lock to use when invoking callbacks. More...
 
virtual bool removeCallbackLock () override
 Remove a lock on callbacks added with setCallbackLock() More...
 
virtual bool lockCallback () override
 Lock callbacks until unlockCallback() is called. More...
 
virtual bool tryLockCallback () override
 Try to lock callbacks until unlockCallback() is called. More...
 
virtual void unlockCallback () override
 Unlock callbacks. More...
 
- Public Member Functions inherited from yarp::os::Contactable
virtual ~Contactable ()
 Destructor. More...
 
void setReadOnly ()
 Shorthand for setInputMode(true), setOutputMode(false), setRpcMode(false) More...
 
void setWriteOnly ()
 Shorthand for setInputMode(false), setOutputMode(true), setRpcMode(false) More...
 
void setRpcServer ()
 Shorthand for setInputMode(true), setOutputMode(false), setRpcMode(true) More...
 
void setRpcClient ()
 Shorthand for setInputMode(false), setOutputMode(true), setRpcMode(true) More...
 
- Public Member Functions inherited from yarp::os::TypedReaderCallback< T >
virtual ~TypedReaderCallback ()
 Destructor. More...
 
virtual void onRead (T &datum, const yarp::os::TypedReader< T > &reader)
 Callback method. More...
 

Private Member Functions

Contactableactive ()
 
BufferedPort< T > & buffer ()
 
void clear ()
 

Private Attributes

bool isStrict
 
Port port
 
BufferedPort< T > * buffered_port
 

Constructor & Destructor Documentation

◆ Subscriber()

template<class T>
yarp::os::Subscriber< T >::Subscriber ( const std::string &  name = "")
inline

Constructor.

Parameters
nameoptional topic name to publish to.

Definition at line 43 of file Subscriber.h.

◆ ~Subscriber()

template<class T>
virtual yarp::os::Subscriber< T >::~Subscriber ( )
inlinevirtual

Destructor.

Definition at line 61 of file Subscriber.h.

Member Function Documentation

◆ active()

template<class T>
Contactable& yarp::os::Subscriber< T >::active ( )
inlineprivate

Definition at line 160 of file Subscriber.h.

◆ asPort() [1/2]

template<class T>
virtual Port& yarp::os::Subscriber< T >::asPort ( )
inlineoverridevirtual

Get the concrete Port being used for communication.

Implements yarp::os::AbstractContactable.

Definition at line 124 of file Subscriber.h.

◆ asPort() [2/2]

template<class T>
virtual const Port& yarp::os::Subscriber< T >::asPort ( ) const
inlineoverridevirtual

Get the concrete Port being used for communication, const version.

Implements yarp::os::AbstractContactable.

Definition at line 128 of file Subscriber.h.

◆ buffer()

template<class T>
BufferedPort<T>& yarp::os::Subscriber< T >::buffer ( )
inlineprivate

Definition at line 165 of file Subscriber.h.

◆ clear()

template<class T>
void yarp::os::Subscriber< T >::clear ( )
inlineprivate

Definition at line 176 of file Subscriber.h.

◆ close()

template<class T>
virtual void yarp::os::Subscriber< T >::close ( )
inlineoverridevirtual

Stop port activity.

Reimplemented from yarp::os::AbstractContactable.

Definition at line 92 of file Subscriber.h.

◆ disableCallback()

template<class T>
void yarp::os::Subscriber< T >::disableCallback ( )
inline

Definition at line 146 of file Subscriber.h.

◆ interrupt()

template<class T>
virtual void yarp::os::Subscriber< T >::interrupt ( )
inlineoverridevirtual

Interrupt any current reads or writes attached to the port.

This is useful prior to calling close(), if there are multiple threads operating on the port. Any reads or writes after the call to interrupt() will fail - unless resume() is called.

Reimplemented from yarp::os::AbstractContactable.

Definition at line 97 of file Subscriber.h.

◆ onRead()

template<class T>
virtual void yarp::os::Subscriber< T >::onRead ( T &  datum)
inlineoverridevirtual

Callback method.

Parameters
datumdata read from a port

Reimplemented from yarp::os::TypedReaderCallback< T >.

Definition at line 133 of file Subscriber.h.

◆ open() [1/2]

template<class T>
virtual bool yarp::os::Subscriber< T >::open ( const std::string &  name)
inlineoverridevirtual

Start port operation, with a specific name, with automatically-chosen network parameters.

The port is registered with the given name, and allocated network resources, by communicating with the YARP name server.

Returns
true iff the port started operation successfully and is now visible on the YARP network

Reimplemented from yarp::os::AbstractContactable.

Definition at line 80 of file Subscriber.h.

◆ open() [2/2]

template<class T>
virtual bool yarp::os::Subscriber< T >::open ( const Contact contact,
bool  registerName = true 
)
inlineoverridevirtual

Start port operation with user-chosen network parameters.

Contact information is supplied by the user rather than the name server. If the Contact information is incomplete, the name server is used to complete it (set registerName to false if you don't want name server help).

Returns
true iff the port started operation successfully and is now visible on the YARP network

Reimplemented from yarp::os::AbstractContactable.

Definition at line 86 of file Subscriber.h.

◆ read()

template<class T>
T* yarp::os::Subscriber< T >::read ( bool  shouldWait = true)
inline

Read a message from the port.

Waits by default. May return nullptr if the port status has changed.

Parameters
shouldWaitfalse if the call should return immediately if no message is available
Returns
a message, or nullptr

Definition at line 120 of file Subscriber.h.

◆ resume()

template<class T>
virtual void yarp::os::Subscriber< T >::resume ( )
inlineoverridevirtual

Put the port back in an operative state after interrupt() has been called.

Reimplemented from yarp::os::AbstractContactable.

Definition at line 102 of file Subscriber.h.

◆ setReader()

template<class T>
void yarp::os::Subscriber< T >::setReader ( PortReader reader)
inlineoverridevirtual

Set an external reader for port data.

Parameters
readerthe external reader to use

Reimplemented from yarp::os::AbstractContactable.

Definition at line 107 of file Subscriber.h.

◆ setStrict()

template<class T>
void yarp::os::Subscriber< T >::setStrict ( bool  strict = true)
inline

Definition at line 150 of file Subscriber.h.

◆ topic()

template<class T>
bool yarp::os::Subscriber< T >::topic ( const std::string &  name)
inline

Set topic to subscribe to.

Parameters
nametopic name
Returns
true on success

Definition at line 74 of file Subscriber.h.

◆ useCallback() [1/2]

template<class T>
void yarp::os::Subscriber< T >::useCallback ( TypedReaderCallback< T > &  callback)
inline

Definition at line 138 of file Subscriber.h.

◆ useCallback() [2/2]

template<class T>
void yarp::os::Subscriber< T >::useCallback ( )
inline

Definition at line 142 of file Subscriber.h.

Member Data Documentation

◆ buffered_port

template<class T>
BufferedPort<T>* yarp::os::Subscriber< T >::buffered_port
private

Definition at line 158 of file Subscriber.h.

◆ isStrict

template<class T>
bool yarp::os::Subscriber< T >::isStrict
private

Definition at line 156 of file Subscriber.h.

◆ port

template<class T>
Port yarp::os::Subscriber< T >::port
private

Definition at line 157 of file Subscriber.h.


The documentation for this class was generated from the following file: