YARP
Yet Another Robot Platform
ConnectionWriter.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_CONNECTIONWRITER_H
8 #define YARP_OS_CONNECTIONWRITER_H
9 
10 #include <yarp/conf/numeric.h>
11 
12 #include <yarp/os/api.h>
13 
14 #include <string>
15 
16 namespace yarp::os {
17 class ConnectionReader;
18 class PortReader;
19 class PortWriter;
20 class Portable;
21 class SizedWriter;
22 class OutputStream;
23 } // namespace yarp::os
24 
25 
26 namespace yarp::os {
27 
34 {
35 public:
39  virtual ~ConnectionWriter();
40 
51  virtual void appendBlock(const char* data, size_t len) = 0;
52 
58  YARP_DEPRECATED_MSG("Use appendInt32 instead") // Since YARP 3.5.0
59  virtual void appendInt(int data) final
60  {
61  appendInt32(static_cast<std::int32_t>(data));
62  }
63 
68  virtual void appendInt8(std::int8_t data) = 0;
69 
74  virtual void appendInt16(std::int16_t data) = 0;
75 
80  virtual void appendInt32(std::int32_t data) = 0;
81 
86  virtual void appendInt64(std::int64_t data) = 0;
87 
95  YARP_DEPRECATED_MSG("Use appendFloat64 instead") // Since YARP 3.5.0
96  virtual void appendDouble(double data)
97  {
98  appendFloat64(static_cast<yarp::conf::float64_t>(data));
99  }
100 
107  virtual void appendFloat32(yarp::conf::float32_t data) = 0;
108 
115  virtual void appendFloat64(yarp::conf::float64_t data) = 0;
116 
117 #ifndef YARP_NO_DEPRECATED // Since YARP 3.2
124  YARP_DEPRECATED_MSG("Use appendText() instead")
125  virtual void appendString(const char* str, const char terminate = '\n') final
126  {
127  appendText({str}, terminate);
128  }
129 #endif
130 
140  virtual void appendText(const std::string& str, const char terminate = '\n') = 0;
141 
142 #ifndef YARP_NO_DEPRECATED // Since YARP 3.2
143  YARP_DEPRECATED_MSG("Use appendString() instead")
144  virtual void appendRawString(const std::string& str) final
145  {
146  appendString(str);
147  }
148 #endif
149 
159  void appendString(const std::string& str)
160  {
161  appendInt32(static_cast<std::int32_t>(str.length()));
162  appendBlock((char*)str.c_str(), str.length());
163  }
164 
172  virtual void appendExternalBlock(const char* data, size_t len) = 0;
173 
180  virtual bool isTextMode() const = 0;
181 
187  virtual bool isBareMode() const = 0;
188 
196  virtual void declareSizes(int argc, int* argv) = 0;
197 
204  virtual void setReplyHandler(PortReader& reader) = 0;
205 
211  virtual void setReference(Portable* obj) = 0;
212 
213 
222  virtual bool convertTextMode() = 0;
223 
224 
229  virtual bool isValid() const = 0;
230 
235  virtual bool isActive() const = 0;
236 
243  virtual bool isError() const = 0;
244 
245 
251  virtual void requestDrop() = 0;
252 
258  virtual bool isNull() const;
259 
260 
264  virtual SizedWriter* getBuffer() = 0;
265 
269  virtual const SizedWriter* getBuffer() const = 0;
270 
277  static ConnectionWriter* createBufferedConnectionWriter();
278 
279  static bool writeToStream(PortWriter& portable, OutputStream& os);
280 };
281 
282 } // namespace yarp::os
283 
284 #endif // YARP_OS_CONNECTIONWRITER_H
An interface for writing to a network connection.
virtual bool isError() const =0
virtual void setReplyHandler(PortReader &reader)=0
This sets a handler to deal with replies to the message.
virtual void appendInt64(std::int64_t data)=0
Send a representation of a 64-bit integer to the network connection.
virtual SizedWriter * getBuffer()=0
virtual bool isBareMode() const =0
Check if the connection is bare mode.
virtual bool isTextMode() const =0
Check if the connection is text mode.
virtual ~ConnectionWriter()
Destructor.
virtual void appendText(const std::string &str, const char terminate='\n')=0
Send a terminated string to the network connection.
virtual void appendInt8(std::int8_t data)=0
Send a representation of a 8-bit integer to the network connection.
virtual void appendFloat32(yarp::conf::float32_t data)=0
Send a representation of a 32-bit floating point number to the network connection.
virtual void appendExternalBlock(const char *data, size_t len)=0
Send a block of data to the network connection, without making a copy.
virtual void appendInt16(std::int16_t data)=0
Send a representation of a 16-bit integer to the network connection.
virtual void declareSizes(int argc, int *argv)=0
If you can easily determine how many blocks there are in a message, call this first,...
virtual void setReference(Portable *obj)=0
Stores a direct pointer to the object being sent.
virtual bool convertTextMode()=0
Converts a standard description in binary into a textual description, if the connection is in text-mo...
virtual void appendInt32(std::int32_t data)=0
Send a representation of a 32-bit integer to the network connection.
virtual const SizedWriter * getBuffer() const =0
virtual void appendFloat64(yarp::conf::float64_t data)=0
Send a representation of a 64-bit floating point number to the network connection.
virtual bool isValid() const =0
virtual void appendBlock(const char *data, size_t len)=0
Send a block of data to the network connection.
void appendString(const std::string &str)
Send a string to the network connection.
virtual void appendString(const char *str, const char terminate='\n') final
Send a character sequence to the network connection.
virtual void requestDrop()=0
Tag the connection to be dropped after the current message.
virtual bool isActive() const =0
Simple specification of the minimum functions needed from output streams.
Definition: OutputStream.h:21
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
This is a base class for objects that can be both read from and be written to the YARP network.
Definition: Portable.h:25
Minimal requirements for an efficient Writer.
Definition: SizedWriter.h:32
#define YARP_DEPRECATED_MSG(MSG)
Expands to either the standard [[deprecated]] attribute or a compiler-specific decorator such as __at...
Definition: compiler.h:2885
double float64_t
Definition: numeric.h:77
float float32_t
Definition: numeric.h:76
An interface to the operating system, including Port based communication.
#define YARP_os_API
Definition: api.h:18