YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
PortReaderBuffer.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef YARP_OS_PORTREADERBUFFER_H
8#define YARP_OS_PORTREADERBUFFER_H
9
10#include <yarp/os/Bottle.h>
11#include <yarp/os/LocalReader.h>
12#include <yarp/os/Port.h>
13#include <yarp/os/PortReader.h>
16#include <yarp/os/Thread.h>
17#include <yarp/os/TypedReader.h>
20
21#include <cstdio>
22#include <string>
23
24namespace yarp::os {
25
34template <typename T>
36 public yarp::os::TypedReader<T>,
37 public yarp::os::LocalReader<T>,
39{
40public:
46 PortReaderBuffer(unsigned int maxBuffer = 0);
47
51 virtual ~PortReaderBuffer();
52
53 void detach();
54
55 // documented in TypedReader
56 void setStrict(bool strict = true) override;
57
64 bool check();
65
66 // documented in TypedReader
67 int getPendingReads() override;
68
69 // documented in TypedReader
70 T* read(bool shouldWait = true) override;
71
72 // documented in TypedReader
73 void interrupt() override;
74
75 // documented in TypedReader
76 T* lastRead() override;
77
85 void attach(Port& port);
86
87 // documented in TypedReader
88 void useCallback(TypedReaderCallback<T>& callback) override;
89
90 // documented in TypedReader
91 void disableCallback() override;
92
100 virtual bool read(ConnectionReader& connection);
101
110 PortReader* create() const override;
111
112 // documented in TypedReader
113 void setReplier(PortReader& reader) override;
114
115 virtual bool getEnvelope(PortReader& envelope);
116
117 // documented in TypedReader
118 bool isClosed() override;
119
120 // documented in TypedReader
121 std::string getName() const override;
122
123 // documented in LocalReader
124 bool acceptObject(T* obj, PortWriter* wrapper) override;
125
126 // documented in LocalReader
127 bool forgetObject(T* obj, yarp::os::PortWriter* wrapper) override;
128
129 // documented in TypedReader
130 void* acquire() override;
131
132 // documented in TypedReader
133 void release(void* handle) override;
134
135 // documented in TypedReader
136 void setTargetPeriod(double period) override;
137
138private:
139 yarp::os::PortReaderBufferBase implementation;
140 bool autoDiscard;
141 T* last;
142 T* default_value;
143 TypedReaderThread<T>* reader;
144};
145
146} // namespace yarp::os
147
149
150#endif // YARP_OS_PORTREADERBUFFER_H
A mini-server for performing network communication in the background.
An interface for reading from a network connection.
Under development.
Definition LocalReader.h:18
Buffer incoming data to a port.
bool forgetObject(T *obj, yarp::os::PortWriter *wrapper) override
Sender is no longer interested in getting callbacks.
T * read(bool shouldWait=true) override
Read an available object from the port.
virtual bool getEnvelope(PortReader &envelope)
void setTargetPeriod(double period) override
Try to provide data periodically.
bool acceptObject(T *obj, PortWriter *wrapper) override
Send object obj; expect callback to wrapper when obj is no longer in use.
bool isClosed() override
Returns whether the port associated with this reader has been closed.
void * acquire() override
Take control of the last object read.
PortReader * create() const override
Factory method.
bool check()
Check if data is available.
virtual ~PortReaderBuffer()
Destructor.
void attach(Port &port)
Attach this buffer to a particular port.
T * lastRead() override
Get the last data returned by read()
std::string getName() const override
Get name of port being read from.
void setStrict(bool strict=true) override
Call this to strictly keep all messages, or allow old ones to be quietly dropped.
void interrupt() override
Abort any read operation currently in progress.
void setReplier(PortReader &reader) override
If a message is received that requires a reply, use this handler.
void useCallback(TypedReaderCallback< T > &callback) override
Set an object whose onRead method will be called when data is available.
void release(void *handle) override
Return control to YARP of an object previously taken control of with the acquire() method.
int getPendingReads() override
Check how many messages are waiting to be read.
void disableCallback() override
Remove a callback set up with useCallback()
Interface implemented by all objects that can read themselves from the network, such as Bottle object...
Definition PortReader.h:24
Interface implemented by all objects that can write themselves to the network, such as Bottle objects...
Definition PortWriter.h:23
A mini-server for network communication.
Definition Port.h:46
A base class for sources of typed data.
Definition TypedReader.h:22
An interface to the operating system, including Port based communication.