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

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

#include <yarp/os/Publisher.h>

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

Public Member Functions

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

Private Member Functions

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

Private Attributes

Port port
 
BufferedPort< T > * buffered_port
 

Detailed Description

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

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

See also
yarp::os::Subscriber

Definition at line 16 of file Publisher.h.

Constructor & Destructor Documentation

◆ Publisher()

template<class T>
yarp::os::Publisher< T >::Publisher ( const ConstString name = "")
inline

Constructor.

Parameters
nameoptional topic name to publish to.

Definition at line 40 of file Publisher.h.

◆ ~Publisher()

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

Destructor.

Definition at line 57 of file Publisher.h.

Member Function Documentation

◆ active()

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

Definition at line 169 of file Publisher.h.

◆ asPort() [1/2]

template<class T>
virtual Port& yarp::os::Publisher< T >::asPort ( )
inlinevirtual

get the concrete Port being used for communication

Implements yarp::os::AbstractContactable.

Definition at line 157 of file Publisher.h.

◆ asPort() [2/2]

template<class T>
virtual const Port& yarp::os::Publisher< T >::asPort ( ) const
inlinevirtual

get the concrete Port being used for communication, constant version

Implements yarp::os::AbstractContactable.

Definition at line 161 of file Publisher.h.

◆ buffer()

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

Definition at line 174 of file Publisher.h.

◆ clear()

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

Definition at line 182 of file Publisher.h.

◆ close()

template<class T>
virtual void yarp::os::Publisher< T >::close ( )
inlinevirtual

Stop port activity.

Reimplemented from yarp::os::AbstractContactable.

Definition at line 88 of file Publisher.h.

◆ getPendingReads()

template<class T>
virtual int yarp::os::Publisher< T >::getPendingReads ( )
inlinevirtual

Definition at line 151 of file Publisher.h.

◆ interrupt()

template<class T>
virtual void yarp::os::Publisher< T >::interrupt ( )
inlinevirtual

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 93 of file Publisher.h.

◆ open() [1/2]

template<class T>
virtual bool yarp::os::Publisher< T >::open ( const ConstString name)
inlinevirtual

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 76 of file Publisher.h.

◆ open() [2/2]

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

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 82 of file Publisher.h.

◆ prepare()

template<class T>
T& yarp::os::Publisher< T >::prepare ( )
inline

Access the object which will be transmitted by the next call to yarp::os::Publisher::write.

The object can safely be modified by the user of this class, to prepare it. Extra objects will be created or reused as necessary depending on the state of communication with the output(s) of the port. Be careful! If prepare() gives you a reused object, it is up to the user to clear the object if that is appropriate. If you are sending yarp::os::Bottle objects, you may want to call yarp::os::Bottle::clear(), for example. YARP doesn't clear objects for you, since there are many cases in which overwriting old data is suffient and reallocation of memory would be unnecessary and inefficient.

Returns
the next object that will be written

Definition at line 123 of file Publisher.h.

◆ resume()

template<class T>
virtual void yarp::os::Publisher< T >::resume ( )
inlinevirtual

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

Reimplemented from yarp::os::AbstractContactable.

Definition at line 98 of file Publisher.h.

◆ setReader()

template<class T>
void yarp::os::Publisher< T >::setReader ( PortReader reader)
inlinevirtual

Set an external reader for port data.

Parameters
readerthe external reader to use

Reimplemented from yarp::os::AbstractContactable.

Definition at line 103 of file Publisher.h.

◆ topic()

template<class T>
bool yarp::os::Publisher< T >::topic ( const ConstString name)
inline

Set topic to publish to.

Parameters
nametopic name
Returns
true on success

Definition at line 70 of file Publisher.h.

◆ waitForWrite()

template<class T>
void yarp::os::Publisher< T >::waitForWrite ( )
inline

Wait for any pending writes to complete.

Definition at line 147 of file Publisher.h.

◆ write()

template<class T>
void yarp::os::Publisher< T >::write ( bool  forceStrict = false)
inline

Write the current object being returned by Publisher::prepare.

That object should no longer be touched by the user of this class – it is now owned by the communications system. The BufferedPort::prepare method should be called again to get a fresh (or reused) object guaranteed to be not in use by the communications system.

Parameters
forceStrictIf this is true, wait until any previous sends are complete. If false, the current object will not be sent on connections that are currently busy.

Definition at line 138 of file Publisher.h.

Member Data Documentation

◆ buffered_port

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

Definition at line 167 of file Publisher.h.

◆ port

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

Definition at line 166 of file Publisher.h.


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