Commit 68743f00d62f57d4acbeb39e32a04d2d9132c30c
1 parent
f2b6e6f0
Exists in
master
and in
3 other branches
Planejando versão C++
Showing
1 changed file
with
92 additions
and
2 deletions
Show diff stats
src/include/lib3270++.h
... | ... | @@ -33,6 +33,7 @@ |
33 | 33 | |
34 | 34 | #define LIB3270_HPP_INCLUDED 1 |
35 | 35 | |
36 | + #include <iostream> | |
36 | 37 | #include <lib3270.h> |
37 | 38 | |
38 | 39 | #if defined(_WIN32) |
... | ... | @@ -62,6 +63,8 @@ |
62 | 63 | |
63 | 64 | namespace TN3270 { |
64 | 65 | |
66 | + class Host; | |
67 | + | |
65 | 68 | enum ProgramMessage : uint8_t { |
66 | 69 | MESSAGE_NONE = LIB3270_MESSAGE_NONE, ///< @brief No message |
67 | 70 | MESSAGE_SYSWAIT = LIB3270_MESSAGE_SYSWAIT, ///< @brief -- |
... | ... | @@ -138,7 +141,7 @@ |
138 | 141 | |
139 | 142 | // Connect/disconnect |
140 | 143 | virtual void connect(const char *url) = 0; |
141 | - virtual void disconnect(const char *url); | |
144 | + virtual void disconnect(); | |
142 | 145 | |
143 | 146 | // Gets |
144 | 147 | virtual std::string toString(int baddr = 0, size_t len = -1, bool lf = false) = 0; |
... | ... | @@ -169,7 +172,7 @@ |
169 | 172 | return push(text.c_str()); |
170 | 173 | } |
171 | 174 | |
172 | - virtual Session & push(int baddr = 0, const std::string &text) = 0; | |
175 | + virtual Session & push(int baddr, const std::string &text) = 0; | |
173 | 176 | virtual Session & push(int row, int col, const std::string &text) = 0; |
174 | 177 | virtual Session & push(const PFKey key) = 0; |
175 | 178 | virtual Session & push(const PAKey key) = 0; |
... | ... | @@ -177,6 +180,83 @@ |
177 | 180 | |
178 | 181 | }; |
179 | 182 | |
183 | + /// @brief TN3270 Host | |
184 | + class TN3270_PUBLIC Host : public std::basic_streambuf<char, std::char_traits<char> > { | |
185 | + private: | |
186 | + | |
187 | + /// @brief Connection with the host | |
188 | + Session *session; | |
189 | + | |
190 | + protected: | |
191 | + | |
192 | + /// @brief Writes characters to the associated file from the put area | |
193 | + int sync() override; | |
194 | + | |
195 | + /// @brief Writes characters to the associated output sequence from the put area. | |
196 | + int overflow(int c) override; | |
197 | + | |
198 | + public: | |
199 | + Host(const char *id = nullptr, const char *url = nullptr); | |
200 | + ~Host(); | |
201 | + | |
202 | + inline ProgramMessage getProgramMessage() const { | |
203 | + return session->getProgramMessage(); | |
204 | + } | |
205 | + | |
206 | + inline operator ProgramMessage() const { | |
207 | + return getProgramMessage(); | |
208 | + } | |
209 | + | |
210 | + inline ConnectionState getConnectionState() const { | |
211 | + return session->getConnectionState(); | |
212 | + } | |
213 | + | |
214 | + inline operator ConnectionState() const { | |
215 | + return getConnectionState(); | |
216 | + } | |
217 | + | |
218 | + | |
219 | + // Sets | |
220 | + | |
221 | + /// @brief Set field at current posicion, jumps to next writable field. | |
222 | + inline Host & push(const char *text) { | |
223 | + session->push(text); | |
224 | + return *this; | |
225 | + }; | |
226 | + | |
227 | + inline Host & push(const std::string &text) { | |
228 | + session->push(text)); | |
229 | + return *this; | |
230 | + | |
231 | + } | |
232 | + | |
233 | + inline Host & push(int baddr, const std::string &text) { | |
234 | + session->push(baddr,text); | |
235 | + return *this; | |
236 | + } | |
237 | + | |
238 | + inline Host & push(int row, int col, const std::string &text) { | |
239 | + session->push(row,col,text); | |
240 | + return *this; | |
241 | + } | |
242 | + | |
243 | + inline Host & push(const PFKey key) { | |
244 | + session->push(key); | |
245 | + return *this; | |
246 | + } | |
247 | + | |
248 | + inline Host & push(const PAKey key) { | |
249 | + session->push(key); | |
250 | + return *this; | |
251 | + } | |
252 | + | |
253 | + inline Host & push(const Action action) { | |
254 | + session->push(action); | |
255 | + return *this; | |
256 | + } | |
257 | + | |
258 | + }; | |
259 | + | |
180 | 260 | } |
181 | 261 | |
182 | 262 | TN3270_PUBLIC const char * toCharString(const TN3270::ProgramMessage programMessage) noexcept; |
... | ... | @@ -192,6 +272,16 @@ |
192 | 272 | return session.pop(value); |
193 | 273 | } |
194 | 274 | |
275 | + template <typename T> | |
276 | + inline TN3270_PUBLIC TN3270::Host & operator<<(TN3270::Host& host, const T value) { | |
277 | + return host.push(value); | |
278 | + } | |
279 | + | |
280 | + template <typename T> | |
281 | + inline TN3270_PUBLIC TN3270::Host & operator>>(TN3270::Host& host, const T value) { | |
282 | + return Host.pop(value); | |
283 | + } | |
284 | + | |
195 | 285 | #endif |
196 | 286 | |
197 | 287 | #endif // LIB3270_H_INCLUDED | ... | ... |