PdCom  5.3
Process data communication client
Loading...
Searching...
No Matches
PosixProcess.h
Go to the documentation of this file.
1/*****************************************************************************
2 * vim:tw=78
3 *
4 * Copyright (C) 2021 Bjarne von Horn (vh at igh dot de).
5 *
6 * This file is part of the PdCom library.
7 *
8 * The PdCom library is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Lesser General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or (at your
11 * option) any later version.
12 *
13 * The PdCom library is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16 * License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with the PdCom library. If not, see <http://www.gnu.org/licenses/>.
20 *
21 *****************************************************************************/
22
24
25#ifndef PDCOM5_POSIXPROCESS_H
26#define PDCOM5_POSIXPROCESS_H
27
28#include <chrono>
29#include <memory>
30#include <pdcom5_export.h>
31#include <string>
32
33namespace PdCom {
34
35
42
43class PDCOM5_PUBLIC PosixProcess
44{
45 public:
52 PosixProcess(const char *host, unsigned short port);
53
58 explicit PosixProcess(int fd);
59
60
61 virtual ~PosixProcess();
62
63 PosixProcess(PosixProcess &&o) = delete;
64 PosixProcess(PosixProcess const &) = delete;
65
66 PosixProcess &operator=(PosixProcess &&o) = delete;
67 PosixProcess &operator=(PosixProcess const &) = delete;
68
69 protected:
71 int fd_;
72
87 void posixWriteBuffered(const char *buf, size_t count);
88
103 void posixWriteDirect(const char *buf, size_t count);
104
105
113 int posixRead(char *buf, int count);
114
123
128 void setWriteTimeout(std::chrono::milliseconds ms);
129
138 void reconnect(const char *host, unsigned short port);
139
140 private:
141 class Impl;
142 std::shared_ptr<Impl> impl_;
143};
144
145} // namespace PdCom
146
147#endif // PDCOM5_POSIXPROCESS_H
PosixProcess(int fd)
Constructor.
PosixProcess(const char *host, unsigned short port)
Constructor.
void posixFlush()
Flush internal buffer to socket.
void posixWriteBuffered(const char *buf, size_t count)
Buffered Wrapper for write().
int fd_
File descriptior of the socket.
Definition PosixProcess.h:71
void setWriteTimeout(std::chrono::milliseconds ms)
Timeout for posixWriteDirect() in non-blocking mode.
void posixWriteDirect(const char *buf, size_t count)
Unbuffered Wrapper for write().
int posixRead(char *buf, int count)
Wrapper for read().
void reconnect(const char *host, unsigned short port)
Establish a new connection.