Commit ae5138b907310e41ad13a732ab430e0857e36e52

Authored by Perry Werneck
1 parent bbf9264c
Exists in master and in 1 other branch develop

Reorganizing paths for documentation.

client/Makefile.in
... ... @@ -91,7 +91,8 @@ DEPENDS= \
91 91 Makefile \
92 92 src/include/*.h \
93 93 $(BASEDIR)/common/src/include/*.h \
94   - $(BASEDIR)/common/src/include/lib3270/*.h
  94 + $(BASEDIR)/client/src/include/lib3270/*.h \
  95 + $(BASEDIR)/client/src/include/lib3270/ipc/*.h \
95 96  
96 97 CFLAGS= \
97 98 @CFLAGS@ \
... ...
client/ipcclient.cbp
... ... @@ -61,6 +61,8 @@
61 61 <Unit filename="src/host/stream.cc" />
62 62 <Unit filename="src/host/string.cc" />
63 63 <Unit filename="src/include/ipc-client-internals.h" />
  64 + <Unit filename="src/include/lib3270/ipc.h" />
  65 + <Unit filename="src/include/lib3270/ipc/request.h" />
64 66 <Unit filename="src/session/get.cc" />
65 67 <Unit filename="src/session/local/actions.cc" />
66 68 <Unit filename="src/session/local/events.cc" />
... ...
client/src/core/linux/request.cc
... ... @@ -44,6 +44,12 @@
44 44  
45 45 namespace TN3270 {
46 46  
  47 + IPC::Request::Request(DBusConnection * conn) {
  48 + this->conn = conn;
  49 + this->msg.in = nullptr;
  50 + this->msg.out = nullptr;
  51 + }
  52 +
47 53 IPC::Request::~Request() {
48 54 if(msg.out) {
49 55 dbus_message_unref(msg.out);
... ...
client/src/include/ipc-client-internals.h
... ... @@ -53,6 +53,7 @@
53 53 #include <iostream>
54 54 #include <mutex>
55 55 #include <lib3270/ipc.h>
  56 + #include <lib3270/ipc/request.h>
56 57 #include <lib3270/popup.h>
57 58 #include <system_error>
58 59 #include <stdexcept>
... ... @@ -174,105 +175,8 @@
174 175 namespace IPC {
175 176  
176 177 TN3270_PRIVATE TN3270::Session * getSessionInstance(const char *id);
177   -
178 178 class Session;
179 179  
180   - /// @brief PW3270 IPC Request/Response.
181   - class Request {
182   - private:
183   -
184   -#ifdef _WIN32
185   - /// @brief Pipe Handle.
186   - HANDLE hPipe;
187   -
188   - /// @brief IPC Data type.
189   - enum Type : uint8_t {
190   - String = 's',
191   - Boolean = 'b',
192   - Uchar = 'y',
193   - Int16 = 'n',
194   - Uint16 = 'q',
195   - Int32 = 'i',
196   - Int32x = 'h',
197   - Uint32 = 'u',
198   - Int64 = 'x',
199   - Uint64 = 't'
200   - };
201   -
202   - struct {
203   - DWORD length; ///< @brief Length of input buffer.
204   - DWORD used; ///< @brief Length of used block.
205   - DWORD current; ///< @brief Offset of the current argument.
206   - uint8_t * block;
207   - } in;
208   -
209   - struct {
210   - DWORD length;
211   - DWORD used;
212   - uint8_t * block;
213   - } out;
214   -
215   - struct DataBlock {
216   - Type type;
217   - };
218   -
219   - /// @brief Store value on data block.
220   - DataBlock * pushBlock(const void *ptr, size_t len);
221   -
222   - /// @brief Get next argument.
223   - DataBlock * getNextBlock() const;
224   -
225   - /// @brief Pointer to number of variants in the output buffer.
226   - uint16_t * outvalues;
227   -
228   -#else
229   - struct {
230   - DBusMessage * in;
231   - DBusMessage * out;
232   - DBusMessageIter iter;
233   -
234   - } msg;
235   - DBusConnection * conn;
236   -
237   -#endif // _WIN32
238   -
239   - protected:
240   -
241   -#ifdef _WIN32
242   - Request(HANDLE hPipe, const char *name, uint16_t type);
243   -#endif // _WIN32
244   -
245   - public:
246   -
247   - /// @brief Create a method call.
248   - Request(const IPC::Session &session, const char *method);
249   -
250   - /// @brief Create a get/set property call.
251   - ///
252   - /// @param session Session object.
253   - /// @param isSet true if this is a setProperty call.
254   - /// @param property Property name.
255   - //
256   - Request(const IPC::Session &session, bool isSet, const char *property);
257   -
258   - ~Request();
259   -
260   - Request & call();
261   -
262   - // Push values
263   - Request & push(const char *arg);
264   - Request & push(const bool arg);
265   - Request & push(const int32_t arg);
266   - Request & push(const uint32_t arg);
267   - Request & push(const uint8_t arg);
268   -
269   - // Pop values
270   - Request & pop(std::string &value);
271   - Request & pop(int &value);
272   - Request & pop(unsigned int &value);
273   -
274   - };
275   -
276 180 }
277 181  
278 182 }
... ...
client/src/include/lib3270/ipc.h 0 → 100644
... ... @@ -0,0 +1,624 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como ipc.h e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 +#ifndef LIB3270_IPC_H_INCLUDED
  31 +
  32 + #define LIB3270_IPC_H_INCLUDED 1
  33 +
  34 + #include <iostream>
  35 + #include <cstdarg>
  36 + #include <vector>
  37 + #include <functional>
  38 + #include <lib3270.h>
  39 + #include <lib3270/keyboard.h>
  40 +
  41 + #if defined(_WIN32)
  42 +
  43 + #define TN3270_PUBLIC __declspec (dllexport)
  44 + #define TN3270_PRIVATE
  45 +
  46 + #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
  47 +
  48 + #define TN3270_PUBLIC
  49 + #define TN3270_PRIVATE
  50 +
  51 + #elif defined(__GNUC__)
  52 +
  53 + #define TN3270_PUBLIC __attribute__((visibility("default")))
  54 + #define TN3270_PRIVATE __attribute__((visibility("hidden")))
  55 +
  56 + #else
  57 +
  58 + #error Unable to set visibility attribute
  59 +
  60 + #endif
  61 +
  62 +#ifdef __cplusplus
  63 +
  64 + #include <string>
  65 +
  66 + namespace TN3270 {
  67 +
  68 + class Host;
  69 + class Controller;
  70 +
  71 + #define DEFAULT_TIMEOUT 5
  72 +
  73 + TN3270_PUBLIC const char * getVersion();
  74 + TN3270_PUBLIC const char * getRevision();
  75 +
  76 + class TN3270_PUBLIC Event {
  77 + public:
  78 + enum Type : uint8_t {
  79 + All, ///< @brief All events (undefined).
  80 + Popup, ///< @brief Popup message.
  81 + Trace, ///< @brief Trace message.
  82 + Message, ///< @brief Generic message.
  83 + Connection ///< @brief Connect/Disconnect event.
  84 + };
  85 +
  86 + private:
  87 + Type type;
  88 +
  89 + protected:
  90 + Event(enum Type type);
  91 +
  92 + public:
  93 + virtual ~Event();
  94 +
  95 + /// @brief Check event type
  96 + inline bool is(Event::Type type) const noexcept {
  97 + return this->type == type;
  98 + }
  99 +
  100 + /// @brief Check event type
  101 + inline bool operator==(Event::Type type) const noexcept {
  102 + return this->type == type;
  103 + }
  104 +
  105 + inline operator Event::Type() const noexcept {
  106 + return this->type;
  107 + }
  108 +
  109 + /// @brief Get event description.
  110 + virtual std::string toString() const = 0;
  111 +
  112 + };
  113 +
  114 + enum ProgramMessage : uint8_t {
  115 + MESSAGE_NONE = LIB3270_MESSAGE_NONE, ///< @brief No message
  116 + MESSAGE_SYSWAIT = LIB3270_MESSAGE_SYSWAIT, ///< @brief --
  117 + MESSAGE_TWAIT = LIB3270_MESSAGE_TWAIT, ///< @brief --
  118 + MESSAGE_CONNECTED = LIB3270_MESSAGE_CONNECTED, ///< @brief Connected
  119 + MESSAGE_DISCONNECTED = LIB3270_MESSAGE_DISCONNECTED, ///< @brief Disconnected from host
  120 + MESSAGE_AWAITING_FIRST = LIB3270_MESSAGE_AWAITING_FIRST, ///< @brief --
  121 + MESSAGE_MINUS = LIB3270_MESSAGE_MINUS, ///< @brief --
  122 + MESSAGE_PROTECTED = LIB3270_MESSAGE_PROTECTED, ///< @brief --
  123 + MESSAGE_NUMERIC = LIB3270_MESSAGE_NUMERIC, ///< @brief --
  124 + MESSAGE_OVERFLOW = LIB3270_MESSAGE_OVERFLOW, ///< @brief --
  125 + MESSAGE_INHIBIT = LIB3270_MESSAGE_INHIBIT, ///< @brief --
  126 + MESSAGE_KYBDLOCK = LIB3270_MESSAGE_KYBDLOCK, ///< @brief Keyboard is locked
  127 +
  128 + MESSAGE_X = LIB3270_MESSAGE_X, ///< @brief --
  129 + MESSAGE_RESOLVING = LIB3270_MESSAGE_RESOLVING, ///< @brief Resolving hostname (running DNS query)
  130 + MESSAGE_CONNECTING = LIB3270_MESSAGE_CONNECTING ///< @brief Connecting to host
  131 +
  132 + };
  133 +
  134 + /// @brief connection state.
  135 + enum ConnectionState : uint8_t {
  136 + DISCONNECTED = LIB3270_NOT_CONNECTED, ///< @brief disconnected
  137 + RESOLVING = LIB3270_RESOLVING, ///< @brief resolving hostname
  138 + PENDING = LIB3270_PENDING, ///< @brief connection pending
  139 + CONNECTED_INITIAL = LIB3270_CONNECTED_INITIAL, ///< @brief connected, no mode yet
  140 + CONNECTED_ANSI = LIB3270_CONNECTED_ANSI, ///< @brief connected in NVT ANSI mode
  141 + CONNECTED_3270 = LIB3270_CONNECTED_3270, ///< @brief connected in old-style 3270 mode
  142 + CONNECTED_INITIAL_E = LIB3270_CONNECTED_INITIAL_E, ///< @brief connected in TN3270E mode, unnegotiated
  143 + CONNECTED_NVT = LIB3270_CONNECTED_NVT, ///< @brief connected in TN3270E mode, NVT mode
  144 + CONNECTED_SSCP = LIB3270_CONNECTED_SSCP, ///< @brief connected in TN3270E mode, SSCP-LU mode
  145 + CONNECTED_TN3270E = LIB3270_CONNECTED_TN3270E, ///< @brief connected in TN3270E mode, 3270 mode
  146 + };
  147 +
  148 + enum SSLState : uint8_t {
  149 + SSL_UNSECURE = LIB3270_SSL_UNSECURE, ///< @brief No secure connection
  150 + SSL_SECURE = LIB3270_SSL_SECURE, ///< @brief Connection secure with CA check
  151 + SSL_NEGOTIATED = LIB3270_SSL_NEGOTIATED, ///< @brief Connection secure, no CA, self-signed or expired CRL
  152 + SSL_NEGOTIATING = LIB3270_SSL_NEGOTIATING, ///< @brief Negotiating SSL
  153 + SSL_UNDEFINED = LIB3270_SSL_UNDEFINED ///< @brief Undefined
  154 + };
  155 +
  156 + /// @brief PF Keys
  157 + enum PFKey : uint8_t {
  158 + PF_1,
  159 + PF_2,
  160 + PF_3,
  161 + PF_4,
  162 + PF_5,
  163 + PF_6,
  164 + PF_7,
  165 + PF_8,
  166 + PF_9,
  167 + PF_10,
  168 + PF_11,
  169 + PF_12,
  170 + PF_13,
  171 + PF_14,
  172 + PF_15,
  173 + PF_16,
  174 + PF_17,
  175 + PF_18,
  176 + PF_19,
  177 + PF_20,
  178 + PF_21,
  179 + PF_22,
  180 + PF_23,
  181 + PF_24
  182 + };
  183 +
  184 + /// @brief PF Keys
  185 + enum PAKey : uint8_t {
  186 + PA_1,
  187 + PA_2,
  188 + PA_3
  189 + };
  190 +
  191 + /// @brief Actions keys
  192 + enum Action : uint8_t {
  193 + ENTER, ///< @brief Enter key
  194 + ERASE,
  195 + ERASE_EOF,
  196 + ERASE_EOL,
  197 + ERASE_INPUT,
  198 + KYBD_RESET,
  199 + NEWLINE,
  200 + CLEAR,
  201 + SELECT_FIELD,
  202 + SELECT_ALL,
  203 + UNSELECT,
  204 + RESELECT,
  205 + CHAR_DELETE,
  206 + DUP,
  207 + FIELDMARK,
  208 + BACKSPACE,
  209 + WORD_PREVIOUS,
  210 + WORD_NEXT,
  211 + FIELD_END, ///< @brief Move the cursor to the first blank after the last nonblank in the field.
  212 + FIELD_FIRST, ///< @brief Move to first unprotected field on screen.
  213 + FIELD_NEXT, ///< @brief Jump to the next field.
  214 + FIELD_PREVIOUS, ///< @brief Tab backward to previous field.
  215 + ATTN, ///< @brief ATTN key, per RFC 2355. Sends IP, regardless.
  216 + BREAK,
  217 + WORD_DELETE, ///< @brief Backspaces the cursor until it hits the front of a word (does a ^W).
  218 + FIELD_DELETE, ///< @brief Delete field key (does a ^U).
  219 + SYSREQ,
  220 + KYBD_UNLOCK, ///< @brief Unlock the keyboard if it was locked by operator error.
  221 + };
  222 +
  223 + /// @brief TN3270 Session.
  224 + class TN3270_PUBLIC Session {
  225 + protected:
  226 + Session();
  227 +
  228 + /// @brief Write information to log file.
  229 + void info(const char *fmt, ...) const;
  230 +
  231 + /// @brief Write warning to log file.
  232 + void warning(const char *fmt, ...) const;
  233 +
  234 + /// @brief Write error to log file.
  235 + void error(const char *fmt, ...) const;
  236 +
  237 + /// @brief Fire event.
  238 + void fire(const Event &event);
  239 +
  240 + public:
  241 +
  242 + /// @brief Get an instance of the TN3270 session based on the supplied ID.
  243 + static Session * getInstance(const char *id = nullptr);
  244 + virtual ~Session();
  245 +
  246 + // States
  247 + virtual ProgramMessage getProgramMessage() const = 0;
  248 + virtual ConnectionState getConnectionState() const = 0;
  249 + virtual SSLState getSSLState() const = 0;
  250 +
  251 + // Contents
  252 + virtual std::string toString(int baddr = 0, int len = -1, char lf = '\n') const = 0;
  253 + virtual std::string toString(unsigned int row, unsigned int col, int len, char lf = '\n') const = 0;
  254 +
  255 + /// @brief Input string.
  256 + virtual void push(const char *text, size_t length) = 0;
  257 + virtual void push(int baddr, const char *text, int length) = 0;
  258 + virtual void push(int row, int col, const char *text, int length) = 0;
  259 +
  260 + inline void push(const std::string &text) {
  261 + push(-1,text.c_str(),text.size());
  262 + }
  263 +
  264 + inline void push(int baddr, const std::string &text) {
  265 + push(baddr,text.c_str(),text.size());
  266 + }
  267 +
  268 + inline void push(int row, int col, const std::string &text) {
  269 + push(row,col,text.c_str(),text.size());
  270 + }
  271 +
  272 + void push(const PFKey key);
  273 + void push(const PAKey key);
  274 + virtual void push(const Action action) = 0;
  275 +
  276 + /// @brief Get contents of field ad address.
  277 + virtual void pop(int baddr, std::string &text) = 0;
  278 +
  279 + /// @brief Get contents of field at position.
  280 + virtual void pop(int row, int col, std::string &text) = 0;
  281 +
  282 + /// @brief Get contents of field at cursor position.
  283 + virtual void pop(std::string &text) = 0;
  284 +
  285 + /**
  286 + * @brief Input string parsing control char.
  287 + */
  288 + LIB3270_KEYBOARD_LOCK_STATE input(const std::string &str, const char control_char = '@');
  289 +
  290 + // Properties.
  291 + virtual void getProperty(const char *name, int &value) const = 0;
  292 + virtual void getProperty(const char *name, unsigned int &value) const = 0;
  293 + virtual void getProperty(const char *name, std::string &value) const = 0;
  294 + virtual void getProperty(const char *name, bool &value) const = 0;
  295 + virtual void setProperty(const char *name, const int value) = 0;
  296 + virtual void setProperty(const char *name, const char *value) = 0;
  297 +
  298 + virtual std::string getVersion() const = 0;
  299 + virtual std::string getRevision() const = 0;
  300 + virtual std::string getLUName() const = 0;
  301 + virtual LIB3270_KEYBOARD_LOCK_STATE getKeyboardLockState() const = 0;
  302 +
  303 + virtual std::string getHostURL() const = 0;
  304 + virtual void setHostURL(const char *url) = 0;
  305 +
  306 + virtual void setUnlockDelay(unsigned short delay = 350) = 0;
  307 + virtual void setLockOnOperatorError(bool lock = true) = 0;
  308 +
  309 + virtual unsigned short getScreenWidth() const = 0;
  310 + virtual unsigned short getScreenHeight() const = 0;
  311 + virtual unsigned short getScreenLength() const = 0;
  312 +
  313 + /// @brief Set cursor address.
  314 + virtual unsigned short setCursor(int addr = -1) = 0;
  315 +
  316 + /// @brief Set cursor position.
  317 + virtual unsigned short setCursor(unsigned short row, unsigned short col) = 0;
  318 +
  319 + /// @brief Get cursor address
  320 + virtual unsigned short getCursorAddress() = 0;
  321 +
  322 + /// @brief Set local charset.
  323 + virtual void setCharSet(const char *charset = NULL) = 0;
  324 +
  325 + // Actions
  326 +
  327 + /// @brief Execute action by name.
  328 + virtual void action(const char *action_name) = 0;
  329 +
  330 + // Connect/disconnect
  331 + virtual void connect(const char *url = nullptr, int seconds = DEFAULT_TIMEOUT) = 0;
  332 + virtual void disconnect() = 0;
  333 +
  334 + /// @brief Wait.
  335 + virtual void wait(time_t seconds) const = 0;
  336 +
  337 + /// @brief Wait until session state changes to "ready".
  338 + virtual void waitForReady(time_t timeout = DEFAULT_TIMEOUT) const = 0;
  339 +
  340 + /// @brief Wait for screen changes.
  341 + virtual void waitForChange(time_t seconds = DEFAULT_TIMEOUT) const = 0;
  342 +
  343 + /// @brief Wait for screen changes.
  344 + virtual LIB3270_KEYBOARD_LOCK_STATE waitForKeyboardUnlock(time_t seconds = DEFAULT_TIMEOUT) const = 0;
  345 +
  346 + /// @brief Send PF.
  347 + virtual void pfkey(unsigned short value) = 0;
  348 +
  349 + /// @brief Send PA.
  350 + virtual void pakey(unsigned short value) = 0;
  351 +
  352 + /// @brief Request print
  353 + virtual void print(LIB3270_CONTENT_OPTION option = LIB3270_CONTENT_ALL) = 0;
  354 +
  355 + /// @brief Insert event listener.
  356 + // void insert(Event::Type type, std::function <void(const Event &event)> listener);
  357 +
  358 + // Misc
  359 +
  360 + /// @brief Search
  361 + size_t find(const char * str, size_t pos = 0) const;
  362 +
  363 + /// @brief Compare contents.
  364 + int compare(int baddr, const char* s, int len = -1) const;
  365 + int compare(unsigned int row, unsigned int col, const char* s, int len = -1) const;
  366 +
  367 + };
  368 +
  369 + /// @brief TN3270 Host
  370 + class TN3270_PUBLIC Host : public std::basic_streambuf<char, std::char_traits<char> > {
  371 + private:
  372 +
  373 + /// @brief Connection with the host
  374 + Session *session;
  375 +
  376 + /// @brief How much seconds we wait for the terminal to be ready?
  377 + time_t timeout;
  378 +
  379 + protected:
  380 +
  381 + /// @brief Writes characters to the associated file from the put area
  382 + int sync() override;
  383 +
  384 + /// @brief Writes characters to the associated output sequence from the put area.
  385 + int overflow(int c) override;
  386 +
  387 + /*
  388 + /// @brief Write information to log file.
  389 + void info(const char *fmt, ...) const;
  390 +
  391 + /// @brief Write warning to log file.
  392 + void warning(const char *fmt, ...) const;
  393 +
  394 + /// @brief Write error to log file.
  395 + void error(const char *fmt, ...) const;
  396 + */
  397 +
  398 + public:
  399 + Host(const char *id = nullptr, const char *url = nullptr, time_t timeout = DEFAULT_TIMEOUT);
  400 + ~Host();
  401 +
  402 + inline bool operator==(ConnectionState state) const noexcept {
  403 + return session->getConnectionState() == state;
  404 + }
  405 +
  406 + // Contents
  407 +
  408 + /**
  409 + * @brief Input string parsing control char.
  410 + */
  411 + LIB3270_KEYBOARD_LOCK_STATE input(const char *text, int length = -1, const char control_char = '@');
  412 +
  413 + Host & push(int baddr, const std::string &text);
  414 + Host & push(int row, int col, const std::string &text);
  415 + Host & push(const std::string &text);
  416 +
  417 + Host & push(int baddr, const char *str, int len = -1);
  418 + Host & push(int row, int col, const char *str, int len = -1);
  419 + Host & push(const char *str, int len = -1);
  420 +
  421 + Host & pop(int baddr, std::string &text);
  422 + Host & pop(int row, int col, std::string &text);
  423 + Host & pop(std::string &text);
  424 +
  425 + std::string toString() const;
  426 + std::string toString(int baddr, int len = -1, char lf = '\n') const;
  427 + std::string toString(unsigned int row, unsigned int col, int len = -1, char lf = '\n') const;
  428 +
  429 + template<typename T>
  430 + Host & push(T value) {
  431 + session->push(value);
  432 + sync();
  433 + return *this;
  434 + }
  435 +
  436 + template<typename T>
  437 + Host & pop(T value) {
  438 + sync();
  439 + session->pop(value);
  440 + return *this;
  441 + }
  442 +
  443 + // Actions
  444 + Host & connect(const char *url = nullptr);
  445 + Host & disconnect();
  446 + Host & waitForReady(time_t seconds);
  447 +
  448 + inline Host & waitForReady() {
  449 + return waitForReady(this->timeout);
  450 + }
  451 +
  452 + inline LIB3270_KEYBOARD_LOCK_STATE waitForKeyboardUnlock() noexcept {
  453 + return this->session->waitForKeyboardUnlock(timeout);
  454 + }
  455 +
  456 + /// @brief Execute action by name.
  457 + inline Host & action(const char *action_name) {
  458 + session->action(action_name);
  459 + return *this;
  460 + }
  461 +
  462 + inline ProgramMessage getProgramMessage() const {
  463 + return session->getProgramMessage();
  464 + }
  465 +
  466 + operator bool() const;
  467 +
  468 + inline operator ProgramMessage() const {
  469 + return getProgramMessage();
  470 + }
  471 +
  472 + inline ConnectionState getConnectionState() const {
  473 + return session->getConnectionState();
  474 + }
  475 +
  476 + bool isReady() const;
  477 + bool isConnected() const;
  478 +
  479 + inline operator ConnectionState() const {
  480 + return getConnectionState();
  481 + }
  482 +
  483 + /// @brief Set cursor address.
  484 + inline Host & setCursor(unsigned short addr) {
  485 + session->setCursor(addr);
  486 + return *this;
  487 + }
  488 +
  489 + /// @brief Set cursor position.
  490 + inline Host & setCursor(unsigned short row, unsigned short col) {
  491 + session->setCursor(row,col);
  492 + return *this;
  493 + }
  494 +
  495 + /// @brief Get cursor address
  496 + inline unsigned short getCursorAddress() {
  497 + return session->getCursorAddress();
  498 + }
  499 +
  500 + inline void setUnlockDelay(unsigned short delay) {
  501 + return session->setUnlockDelay(delay);
  502 + }
  503 +
  504 + inline void setLockOnOperatorError(bool lock = true) {
  505 + return session->setLockOnOperatorError(lock);
  506 + }
  507 +
  508 + inline void setCharSet(const char *charset) {
  509 + return session->setCharSet(charset);
  510 + }
  511 +
  512 + // Get properties
  513 +
  514 + /// @brief Get lib3270 version.
  515 + inline std::string getVersion() const {
  516 + return session->getVersion();
  517 + }
  518 +
  519 + /// @brief Get lib3270 revision.
  520 + std::string getRevision() const {
  521 + return session->getRevision();
  522 + }
  523 +
  524 + /// @brief Get LU Name.
  525 + std::string getLUName() const {
  526 + return session->getLUName();
  527 + }
  528 +
  529 + inline LIB3270_KEYBOARD_LOCK_STATE getKeyboardLockState() const {
  530 + return session->getKeyboardLockState();
  531 + }
  532 +
  533 + // Actions
  534 +
  535 + /// @brief Send PF.
  536 + inline Host & pfkey(unsigned short value) {
  537 + session->pfkey(value);
  538 + return *this;
  539 + }
  540 +
  541 + /// @brief Send PA.
  542 + inline Host & pakey(unsigned short value) {
  543 + session->pakey(value);
  544 + return *this;
  545 + }
  546 +
  547 + /// @brief Request print
  548 + inline Host & print(LIB3270_CONTENT_OPTION option = LIB3270_CONTENT_ALL) {
  549 + session->print(option);
  550 + return *this;
  551 + }
  552 +
  553 + /// @brief Wait.
  554 + inline Host & wait(unsigned short seconds) {
  555 + session->wait(seconds);
  556 + return *this;
  557 + }
  558 +
  559 + /// @brief Wait for update.
  560 + inline Host & waitForChange(unsigned short seconds) {
  561 + session->waitForChange(seconds);
  562 + return *this;
  563 + }
  564 +
  565 + // Set contents.
  566 +
  567 + /// @brief Input string.
  568 + ///
  569 + /// Input the supplied string processing commands delimited by the control char in
  570 + /// the same way of the old HLLAPI.
  571 + ///
  572 + /// @param text String with the text to input.
  573 + /// @param control_char Control character used to identify commands.
  574 + // Host & input(const char *text, const char control_char = '@');
  575 +
  576 + // Host & input(const char *text, size_t sz);
  577 +
  578 + /// @brief Set field at current position, jumps to next writable field.
  579 + inline Host & push(const char *text) {
  580 + session->push(text,-1);
  581 + return *this;
  582 + };
  583 +
  584 + /*
  585 + // Event listeners
  586 + inline Host & insert(Event::Type type, std::function <void(const Event &event)> listener) noexcept {
  587 + session->insert(type, listener);
  588 + return *this;
  589 + }
  590 + */
  591 +
  592 +
  593 + };
  594 +
  595 + }
  596 +
  597 + TN3270_PUBLIC const char * toCharString(const TN3270::ProgramMessage programMessage);
  598 + TN3270_PUBLIC const char * toCharString(const TN3270::ConnectionState connectionState);
  599 + TN3270_PUBLIC const char * toCharString(const TN3270::Action action);
  600 +
  601 + template <typename T>
  602 + inline TN3270_PUBLIC TN3270::Session & operator<<(TN3270::Session& session, const T value) {
  603 + return session.push(value);
  604 + }
  605 +
  606 + template <typename T>
  607 + inline TN3270_PUBLIC TN3270::Session & operator>>(TN3270::Session& session, const T value) {
  608 + return session.pop(value);
  609 + }
  610 +
  611 + template <typename T>
  612 + inline TN3270_PUBLIC TN3270::Host & operator<<(TN3270::Host& host, const T value) {
  613 + return host.push(value);
  614 + }
  615 +
  616 + inline std::ostream & operator<<(std::ostream &stream, const TN3270::Host& host) {
  617 + stream << host.toString();
  618 + return stream;
  619 + }
  620 +
  621 +
  622 +#endif
  623 +
  624 +#endif // LIB3270_IPC_H_INCLUDED
... ...
client/src/include/lib3270/ipc/request.h 0 → 100644
... ... @@ -0,0 +1,165 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como - e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 +/**
  31 + * @file lib3270/ipc/request.h
  32 + *
  33 + * @brief Declares the TN3270 IPC Request object.
  34 + *
  35 + * @author perry.werneck@gmail.com
  36 + *
  37 + */
  38 +
  39 +#ifndef IPC3270_REQUEST_H_INCLUDED
  40 +
  41 + #define IPC3270_REQUEST_H_INCLUDED
  42 +
  43 + #include <config.h>
  44 +
  45 + #ifdef _WIN32
  46 + #include <winsock2.h>
  47 + #include <windows.h>
  48 + #include <ws2tcpip.h>
  49 + #else
  50 + #include <dbus/dbus.h>
  51 + #endif // WIN32
  52 +
  53 + namespace TN3270 {
  54 +
  55 + namespace IPC {
  56 +
  57 + class Session;
  58 +
  59 + /// @brief PW3270 IPC Request/Response.
  60 + class TN3270_PUBLIC Request {
  61 + private:
  62 +
  63 +#ifdef _WIN32
  64 + /// @brief Pipe Handle.
  65 + HANDLE hPipe;
  66 +
  67 + /// @brief IPC Data type.
  68 + enum Type : uint8_t {
  69 + String = 's',
  70 + Boolean = 'b',
  71 + Uchar = 'y',
  72 + Int16 = 'n',
  73 + Uint16 = 'q',
  74 + Int32 = 'i',
  75 + Int32x = 'h',
  76 + Uint32 = 'u',
  77 + Int64 = 'x',
  78 + Uint64 = 't'
  79 + };
  80 +
  81 + struct {
  82 + DWORD length; ///< @brief Length of input buffer.
  83 + DWORD used; ///< @brief Length of used block.
  84 + DWORD current; ///< @brief Offset of the current argument.
  85 + uint8_t * block;
  86 + } in;
  87 +
  88 + struct {
  89 + DWORD length;
  90 + DWORD used;
  91 + uint8_t * block;
  92 + } out;
  93 +
  94 + struct DataBlock {
  95 + Type type;
  96 + };
  97 +
  98 + /// @brief Store value on data block.
  99 + DataBlock * pushBlock(const void *ptr, size_t len);
  100 +
  101 + /// @brief Get next argument.
  102 + DataBlock * getNextBlock() const;
  103 +
  104 + /// @brief Pointer to number of variants in the output buffer.
  105 + uint16_t * outvalues;
  106 +
  107 +#else
  108 + struct {
  109 + DBusMessage * in;
  110 + DBusMessage * out;
  111 + DBusMessageIter iter;
  112 +
  113 + } msg;
  114 + DBusConnection * conn;
  115 +
  116 + Request(DBusConnection * conn);
  117 +
  118 +#endif // _WIN32
  119 +
  120 + protected:
  121 +
  122 +#ifdef _WIN32
  123 + Request(HANDLE hPipe, const char *name, uint16_t type);
  124 +#endif // _WIN32
  125 +
  126 + public:
  127 +
  128 + /// @brief Create a method call.
  129 + ///
  130 + /// @param session Session object.
  131 + /// @param method Method name.
  132 + ///
  133 + Request(const IPC::Session &session, const char *method);
  134 +
  135 + /// @brief Create a get/set property call.
  136 + ///
  137 + /// @param session Session object.
  138 + /// @param isSet true if this is a setProperty call.
  139 + /// @param property Property name.
  140 + ///
  141 + Request(const IPC::Session &session, bool isSet, const char *property);
  142 +
  143 + ~Request();
  144 +
  145 + Request & call();
  146 +
  147 + // Push values
  148 + Request & push(const char *arg);
  149 + Request & push(const bool arg);
  150 + Request & push(const int32_t arg);
  151 + Request & push(const uint32_t arg);
  152 + Request & push(const uint8_t arg);
  153 +
  154 + // Pop values
  155 + Request & pop(std::string &value);
  156 + Request & pop(int &value);
  157 + Request & pop(unsigned int &value);
  158 +
  159 + };
  160 +
  161 + }
  162 +
  163 + }
  164 +
  165 +#endif // IPC3270_REQUEST_H_INCLUDED
... ...
client/src/session/remote/linux/request.cc
... ... @@ -47,13 +47,7 @@
47 47  
48 48 namespace TN3270 {
49 49  
50   - IPC::Request::Request(const IPC::Session &session) {
51   - this->conn = session.conn;
52   - this->msg.in = nullptr;
53   - this->msg.out = nullptr;
54   - }
55   -
56   - IPC::Request::Request(const IPC::Session &session, const char *method) : Request(session) {
  50 + IPC::Request::Request(const IPC::Session &session, const char *method) : Request(session.conn) {
57 51  
58 52 #ifdef DEBUG
59 53 clog << "Creating request \"" << method << "\"" << endl;
... ... @@ -72,7 +66,7 @@
72 66  
73 67 }
74 68  
75   - IPC::Request::Request(const IPC::Session &session, bool isSet, const char *property) : Request(session) {
  69 + IPC::Request::Request(const IPC::Session &session, bool isSet, const char *property) : Request(session.conn) {
76 70  
77 71 this->msg.out = dbus_message_new_method_call(
78 72 session.name.c_str(), // Destination
... ...
common/src/include/lib3270/ipc-glib.h
... ... @@ -1,138 +0,0 @@
1   -/*
2   - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
3   - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
4   - * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob
5   - * o nome G3270.
6   - *
7   - * Copyright (C) <2008> <Banco do Brasil S.A.>
8   - *
9   - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
10   - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
11   - * Free Software Foundation.
12   - *
13   - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
14   - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
15   - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
16   - * obter mais detalhes.
17   - *
18   - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
19   - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
20   - * St, Fifth Floor, Boston, MA 02110-1301 USA
21   - *
22   - * Este programa está nomeado como - e possui - linhas de código.
23   - *
24   - * Contatos:
25   - *
26   - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
27   - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
28   - *
29   - */
30   -
31   - /**
32   - * @brief Common definitions for pw3270 IPC plugin.
33   - *
34   - * @author Perry Werneck <perry.werneck@gmail.com>
35   - *
36   - */
37   -
38   -#ifndef PW3270_IPC_H_INCLUDED
39   -
40   - #define PW3270_IPC_H_INCLUDED
41   -
42   - #ifdef _WIN32
43   -
44   - #define PW3270_IPC_SESSION_BUS_NAME "\\\\.\\pipe\\%s\\%c"
45   -
46   - #else
47   -
48   - #define PW3270_IPC_SESSION_BUS_NAME "br.com.bb.%s.%c"
49   - #define PW3270_IPC_SESSION_INTERFACE_NAME "br.com.bb.tn3270.session"
50   - #define PW3270_IPC_SESSION_OBJECT_PATH "/br/com/bb/tn3270/session"
51   -
52   - #define PW3270_IPC_SERVICE_BUS_NAME "br.com.bb.tn3270.service"
53   - #define PW3270_IPC_SERVICE_INTERFACE_NAME "br.com.bb.tn3270.service"
54   - #define PW3270_IPC_SERVICE_OBJECT_PATH "/br/com/bb/tn3270/service"
55   -
56   - #endif // _WIN32
57   -
58   - #include <glib.h>
59   - #include <gtk/gtk.h>
60   - #include <lib3270.h>
61   -
62   - G_BEGIN_DECLS
63   -
64   - #define GLIB_TYPE_IPC3270_RESPONSE (ipc3270Response_get_type ())
65   - #define IPC3270_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLIB_TYPE_IPC3270_RESPONSE, ipc3270Response))
66   - #define IPC3270_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLIB_TYPE_IPC3270_RESPONSE, ipc3270ResponseClass))
67   - #define IS_IPC3270_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLIB_TYPE_IPC3270_RESPONSE))
68   - #define IS_IPC3270_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLIB_TYPE_IPC3270_RESPONSE))
69   - #define IPC3270_RESPONSE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS ((obj), GLIB_TYPE_IPC3270_RESPONSE, ipc3270ResponseClass))
70   -
71   - typedef struct _ipc3270Response ipc3270Response;
72   - typedef struct _ipc3270ResponseClass ipc3270ResponseClass;
73   -
74   - GObject * ipc3270_response_new();
75   -
76   - void ipc3270_response_append_int32(GObject *object, gint32 value);
77   - void ipc3270_response_append_uint32(GObject *object, guint32 value);
78   - void ipc3270_response_append_string(GObject *object, const gchar *text);
79   - gboolean ipc3270_response_has_values(GObject *object);
80   - GVariant * ipc3270_response_steal_value(GObject *object);
81   -
82   -
83   - #define GLIB_TYPE_IPC3270 (ipc3270_get_type ())
84   - #define IPC3270(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLIB_TYPE_IPC3270, ipc3270))
85   - #define IPC3270_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLIB_TYPE_IPC3270, ipc3270Class))
86   - #define IS_IPC3270(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLIB_TYPE_IPC3270))
87   - #define IS_IPC3270_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLIB_TYPE_IPC3270))
88   - #define IPC3270_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GLIB_TYPE_IPC3270, ipc3270Class))
89   -
90   - typedef struct _ipc3270 ipc3270;
91   - typedef struct _ipc3270Class ipc3270Class;
92   -
93   - GObject * ipc3270_new();
94   - GType ipc3270_get_type(void);
95   - void ipc3270_set_terminal_widget(GObject *object, GtkWidget *widget);
96   - void ipc3270_export_object(GObject *object, const char *name, GError **error);
97   -
98   - void ipc3270_add_terminal_introspection(GString *string);
99   -
100   - const gchar * ipc3270_get_display_charset(GObject *object);
101   - H3270 * ipc3270_get_session(GObject *object);
102   -
103   - GQuark ipc3270_get_error_domain(GObject *object);
104   -
105   - void ipc3270_set_error(GObject *object, int errcode, GError **error);
106   -
107   - int ipc3270_method_call(GObject *object, const gchar *method_name, GVariant *request, GObject *response, GError **error);
108   - gboolean ipc3270_set_property(GObject *object, const gchar *property_name, GVariant *value, GError **error);
109   - GVariant * ipc3270_get_property(GObject *object, const gchar *property_name, GError **error);
110   -
111   - #ifdef _WIN32
112   - unsigned char * ipc3270_pack(const gchar *name, int id, GVariant *values, size_t * szPacket);
113   - unsigned char * ipc3270_pack_value(const gchar *name, int id, GVariant *value, size_t * szPacket);
114   - unsigned char * ipc3270_pack_error(const GError *error, size_t * szPacket);
115   - GVariant * ipc3270_unpack(const unsigned char *packet, int *id);
116   - #endif // _WIN32
117   -
118   - G_END_DECLS
119   -
120   - #if ! GLIB_CHECK_VERSION(2,44,0)
121   - G_GNUC_INTERNAL void ipc3270_autoptr_cleanup_generic_gfree(void *p);
122   - #define g_autofree __attribute__((cleanup(ipc3270_autoptr_cleanup_generic_gfree)))
123   - #endif // ! GLIB(2,44,0)
124   -
125   - #ifdef DEBUG
126   - #define debug( fmt, ... ) fprintf(stderr,"%s(%d) " fmt "\n", __FILE__, (int) __LINE__, __VA_ARGS__ ); fflush(stderr);
127   - #else
128   - #define debug(...) /* __VA_ARGS */
129   - #endif
130   -
131   - typedef struct _ipc_method_int_arg {
132   - const gchar *name;
133   - int (*call)(H3270 *hSession, int keycode);
134   - } IPC_METHOD_INT_ARG;
135   -
136   - const IPC_METHOD_INT_ARG * ipc3270_get_int_arg_methods();
137   -
138   -#endif // PW3270_IPC_H_INCLUDED
common/src/include/lib3270/ipc.h
... ... @@ -1,624 +0,0 @@
1   -/*
2   - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
3   - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
4   - * aplicativos mainframe. Registro no INPI sob o nome G3270.
5   - *
6   - * Copyright (C) <2008> <Banco do Brasil S.A.>
7   - *
8   - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
9   - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
10   - * Free Software Foundation.
11   - *
12   - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
13   - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
14   - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
15   - * obter mais detalhes.
16   - *
17   - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
18   - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
19   - * St, Fifth Floor, Boston, MA 02110-1301 USA
20   - *
21   - * Este programa está nomeado como ipc.h e possui - linhas de código.
22   - *
23   - * Contatos:
24   - *
25   - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
26   - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
27   - *
28   - */
29   -
30   -#ifndef LIB3270_IPC_H_INCLUDED
31   -
32   - #define LIB3270_IPC_H_INCLUDED 1
33   -
34   - #include <iostream>
35   - #include <cstdarg>
36   - #include <vector>
37   - #include <functional>
38   - #include <lib3270.h>
39   - #include <lib3270/keyboard.h>
40   -
41   - #if defined(_WIN32)
42   -
43   - #define TN3270_PUBLIC __declspec (dllexport)
44   - #define TN3270_PRIVATE
45   -
46   - #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
47   -
48   - #define TN3270_PUBLIC
49   - #define TN3270_PRIVATE
50   -
51   - #elif defined(__GNUC__)
52   -
53   - #define TN3270_PUBLIC __attribute__((visibility("default")))
54   - #define TN3270_PRIVATE __attribute__((visibility("hidden")))
55   -
56   - #else
57   -
58   - #error Unable to set visibility attribute
59   -
60   - #endif
61   -
62   -#ifdef __cplusplus
63   -
64   - #include <string>
65   -
66   - namespace TN3270 {
67   -
68   - class Host;
69   - class Controller;
70   -
71   - #define DEFAULT_TIMEOUT 5
72   -
73   - TN3270_PUBLIC const char * getVersion();
74   - TN3270_PUBLIC const char * getRevision();
75   -
76   - class TN3270_PUBLIC Event {
77   - public:
78   - enum Type : uint8_t {
79   - All, ///< @brief All events (undefined).
80   - Popup, ///< @brief Popup message.
81   - Trace, ///< @brief Trace message.
82   - Message, ///< @brief Generic message.
83   - Connection ///< @brief Connect/Disconnect event.
84   - };
85   -
86   - private:
87   - Type type;
88   -
89   - protected:
90   - Event(enum Type type);
91   -
92   - public:
93   - virtual ~Event();
94   -
95   - /// @brief Check event type
96   - inline bool is(Event::Type type) const noexcept {
97   - return this->type == type;
98   - }
99   -
100   - /// @brief Check event type
101   - inline bool operator==(Event::Type type) const noexcept {
102   - return this->type == type;
103   - }
104   -
105   - inline operator Event::Type() const noexcept {
106   - return this->type;
107   - }
108   -
109   - /// @brief Get event description.
110   - virtual std::string toString() const = 0;
111   -
112   - };
113   -
114   - enum ProgramMessage : uint8_t {
115   - MESSAGE_NONE = LIB3270_MESSAGE_NONE, ///< @brief No message
116   - MESSAGE_SYSWAIT = LIB3270_MESSAGE_SYSWAIT, ///< @brief --
117   - MESSAGE_TWAIT = LIB3270_MESSAGE_TWAIT, ///< @brief --
118   - MESSAGE_CONNECTED = LIB3270_MESSAGE_CONNECTED, ///< @brief Connected
119   - MESSAGE_DISCONNECTED = LIB3270_MESSAGE_DISCONNECTED, ///< @brief Disconnected from host
120   - MESSAGE_AWAITING_FIRST = LIB3270_MESSAGE_AWAITING_FIRST, ///< @brief --
121   - MESSAGE_MINUS = LIB3270_MESSAGE_MINUS, ///< @brief --
122   - MESSAGE_PROTECTED = LIB3270_MESSAGE_PROTECTED, ///< @brief --
123   - MESSAGE_NUMERIC = LIB3270_MESSAGE_NUMERIC, ///< @brief --
124   - MESSAGE_OVERFLOW = LIB3270_MESSAGE_OVERFLOW, ///< @brief --
125   - MESSAGE_INHIBIT = LIB3270_MESSAGE_INHIBIT, ///< @brief --
126   - MESSAGE_KYBDLOCK = LIB3270_MESSAGE_KYBDLOCK, ///< @brief Keyboard is locked
127   -
128   - MESSAGE_X = LIB3270_MESSAGE_X, ///< @brief --
129   - MESSAGE_RESOLVING = LIB3270_MESSAGE_RESOLVING, ///< @brief Resolving hostname (running DNS query)
130   - MESSAGE_CONNECTING = LIB3270_MESSAGE_CONNECTING ///< @brief Connecting to host
131   -
132   - };
133   -
134   - /// @brief connection state.
135   - enum ConnectionState : uint8_t {
136   - DISCONNECTED = LIB3270_NOT_CONNECTED, ///< @brief disconnected
137   - RESOLVING = LIB3270_RESOLVING, ///< @brief resolving hostname
138   - PENDING = LIB3270_PENDING, ///< @brief connection pending
139   - CONNECTED_INITIAL = LIB3270_CONNECTED_INITIAL, ///< @brief connected, no mode yet
140   - CONNECTED_ANSI = LIB3270_CONNECTED_ANSI, ///< @brief connected in NVT ANSI mode
141   - CONNECTED_3270 = LIB3270_CONNECTED_3270, ///< @brief connected in old-style 3270 mode
142   - CONNECTED_INITIAL_E = LIB3270_CONNECTED_INITIAL_E, ///< @brief connected in TN3270E mode, unnegotiated
143   - CONNECTED_NVT = LIB3270_CONNECTED_NVT, ///< @brief connected in TN3270E mode, NVT mode
144   - CONNECTED_SSCP = LIB3270_CONNECTED_SSCP, ///< @brief connected in TN3270E mode, SSCP-LU mode
145   - CONNECTED_TN3270E = LIB3270_CONNECTED_TN3270E, ///< @brief connected in TN3270E mode, 3270 mode
146   - };
147   -
148   - enum SSLState : uint8_t {
149   - SSL_UNSECURE = LIB3270_SSL_UNSECURE, ///< @brief No secure connection
150   - SSL_SECURE = LIB3270_SSL_SECURE, ///< @brief Connection secure with CA check
151   - SSL_NEGOTIATED = LIB3270_SSL_NEGOTIATED, ///< @brief Connection secure, no CA, self-signed or expired CRL
152   - SSL_NEGOTIATING = LIB3270_SSL_NEGOTIATING, ///< @brief Negotiating SSL
153   - SSL_UNDEFINED = LIB3270_SSL_UNDEFINED ///< @brief Undefined
154   - };
155   -
156   - /// @brief PF Keys
157   - enum PFKey : uint8_t {
158   - PF_1,
159   - PF_2,
160   - PF_3,
161   - PF_4,
162   - PF_5,
163   - PF_6,
164   - PF_7,
165   - PF_8,
166   - PF_9,
167   - PF_10,
168   - PF_11,
169   - PF_12,
170   - PF_13,
171   - PF_14,
172   - PF_15,
173   - PF_16,
174   - PF_17,
175   - PF_18,
176   - PF_19,
177   - PF_20,
178   - PF_21,
179   - PF_22,
180   - PF_23,
181   - PF_24
182   - };
183   -
184   - /// @brief PF Keys
185   - enum PAKey : uint8_t {
186   - PA_1,
187   - PA_2,
188   - PA_3
189   - };
190   -
191   - /// @brief Actions keys
192   - enum Action : uint8_t {
193   - ENTER, ///< @brief Enter key
194   - ERASE,
195   - ERASE_EOF,
196   - ERASE_EOL,
197   - ERASE_INPUT,
198   - KYBD_RESET,
199   - NEWLINE,
200   - CLEAR,
201   - SELECT_FIELD,
202   - SELECT_ALL,
203   - UNSELECT,
204   - RESELECT,
205   - CHAR_DELETE,
206   - DUP,
207   - FIELDMARK,
208   - BACKSPACE,
209   - WORD_PREVIOUS,
210   - WORD_NEXT,
211   - FIELD_END, ///< @brief Move the cursor to the first blank after the last nonblank in the field.
212   - FIELD_FIRST, ///< @brief Move to first unprotected field on screen.
213   - FIELD_NEXT, ///< @brief Jump to the next field.
214   - FIELD_PREVIOUS, ///< @brief Tab backward to previous field.
215   - ATTN, ///< @brief ATTN key, per RFC 2355. Sends IP, regardless.
216   - BREAK,
217   - WORD_DELETE, ///< @brief Backspaces the cursor until it hits the front of a word (does a ^W).
218   - FIELD_DELETE, ///< @brief Delete field key (does a ^U).
219   - SYSREQ,
220   - KYBD_UNLOCK, ///< @brief Unlock the keyboard if it was locked by operator error.
221   - };
222   -
223   - /// @brief TN3270 Session.
224   - class TN3270_PUBLIC Session {
225   - protected:
226   - Session();
227   -
228   - /// @brief Write information to log file.
229   - void info(const char *fmt, ...) const;
230   -
231   - /// @brief Write warning to log file.
232   - void warning(const char *fmt, ...) const;
233   -
234   - /// @brief Write error to log file.
235   - void error(const char *fmt, ...) const;
236   -
237   - /// @brief Fire event.
238   - void fire(const Event &event);
239   -
240   - public:
241   -
242   - /// @brief Get an instance of the TN3270 session based on the supplied ID.
243   - static Session * getInstance(const char *id = nullptr);
244   - virtual ~Session();
245   -
246   - // States
247   - virtual ProgramMessage getProgramMessage() const = 0;
248   - virtual ConnectionState getConnectionState() const = 0;
249   - virtual SSLState getSSLState() const = 0;
250   -
251   - // Contents
252   - virtual std::string toString(int baddr = 0, int len = -1, char lf = '\n') const = 0;
253   - virtual std::string toString(unsigned int row, unsigned int col, int len, char lf = '\n') const = 0;
254   -
255   - /// @brief Input string.
256   - virtual void push(const char *text, size_t length) = 0;
257   - virtual void push(int baddr, const char *text, int length) = 0;
258   - virtual void push(int row, int col, const char *text, int length) = 0;
259   -
260   - inline void push(const std::string &text) {
261   - push(-1,text.c_str(),text.size());
262   - }
263   -
264   - inline void push(int baddr, const std::string &text) {
265   - push(baddr,text.c_str(),text.size());
266   - }
267   -
268   - inline void push(int row, int col, const std::string &text) {
269   - push(row,col,text.c_str(),text.size());
270   - }
271   -
272   - void push(const PFKey key);
273   - void push(const PAKey key);
274   - virtual void push(const Action action) = 0;
275   -
276   - /// @brief Get contents of field ad address.
277   - virtual void pop(int baddr, std::string &text) = 0;
278   -
279   - /// @brief Get contents of field at position.
280   - virtual void pop(int row, int col, std::string &text) = 0;
281   -
282   - /// @brief Get contents of field at cursor position.
283   - virtual void pop(std::string &text) = 0;
284   -
285   - /**
286   - * @brief Input string parsing control char.
287   - */
288   - LIB3270_KEYBOARD_LOCK_STATE input(const std::string &str, const char control_char = '@');
289   -
290   - // Properties.
291   - virtual void getProperty(const char *name, int &value) const = 0;
292   - virtual void getProperty(const char *name, unsigned int &value) const = 0;
293   - virtual void getProperty(const char *name, std::string &value) const = 0;
294   - virtual void getProperty(const char *name, bool &value) const = 0;
295   - virtual void setProperty(const char *name, const int value) = 0;
296   - virtual void setProperty(const char *name, const char *value) = 0;
297   -
298   - virtual std::string getVersion() const = 0;
299   - virtual std::string getRevision() const = 0;
300   - virtual std::string getLUName() const = 0;
301   - virtual LIB3270_KEYBOARD_LOCK_STATE getKeyboardLockState() const = 0;
302   -
303   - virtual std::string getHostURL() const = 0;
304   - virtual void setHostURL(const char *url) = 0;
305   -
306   - virtual void setUnlockDelay(unsigned short delay = 350) = 0;
307   - virtual void setLockOnOperatorError(bool lock = true) = 0;
308   -
309   - virtual unsigned short getScreenWidth() const = 0;
310   - virtual unsigned short getScreenHeight() const = 0;
311   - virtual unsigned short getScreenLength() const = 0;
312   -
313   - /// @brief Set cursor address.
314   - virtual unsigned short setCursor(int addr = -1) = 0;
315   -
316   - /// @brief Set cursor position.
317   - virtual unsigned short setCursor(unsigned short row, unsigned short col) = 0;
318   -
319   - /// @brief Get cursor address
320   - virtual unsigned short getCursorAddress() = 0;
321   -
322   - /// @brief Set local charset.
323   - virtual void setCharSet(const char *charset = NULL) = 0;
324   -
325   - // Actions
326   -
327   - /// @brief Execute action by name.
328   - virtual void action(const char *action_name) = 0;
329   -
330   - // Connect/disconnect
331   - virtual void connect(const char *url = nullptr, int seconds = DEFAULT_TIMEOUT) = 0;
332   - virtual void disconnect() = 0;
333   -
334   - /// @brief Wait.
335   - virtual void wait(time_t seconds) const = 0;
336   -
337   - /// @brief Wait until session state changes to "ready".
338   - virtual void waitForReady(time_t timeout = DEFAULT_TIMEOUT) const = 0;
339   -
340   - /// @brief Wait for screen changes.
341   - virtual void waitForChange(time_t seconds = DEFAULT_TIMEOUT) const = 0;
342   -
343   - /// @brief Wait for screen changes.
344   - virtual LIB3270_KEYBOARD_LOCK_STATE waitForKeyboardUnlock(time_t seconds = DEFAULT_TIMEOUT) const = 0;
345   -
346   - /// @brief Send PF.
347   - virtual void pfkey(unsigned short value) = 0;
348   -
349   - /// @brief Send PA.
350   - virtual void pakey(unsigned short value) = 0;
351   -
352   - /// @brief Request print
353   - virtual void print(LIB3270_CONTENT_OPTION option = LIB3270_CONTENT_ALL) = 0;
354   -
355   - /// @brief Insert event listener.
356   - // void insert(Event::Type type, std::function <void(const Event &event)> listener);
357   -
358   - // Misc
359   -
360   - /// @brief Search
361   - size_t find(const char * str, size_t pos = 0) const;
362   -
363   - /// @brief Compare contents.
364   - int compare(int baddr, const char* s, int len = -1) const;
365   - int compare(unsigned int row, unsigned int col, const char* s, int len = -1) const;
366   -
367   - };
368   -
369   - /// @brief TN3270 Host
370   - class TN3270_PUBLIC Host : public std::basic_streambuf<char, std::char_traits<char> > {
371   - private:
372   -
373   - /// @brief Connection with the host
374   - Session *session;
375   -
376   - /// @brief How much seconds we wait for the terminal to be ready?
377   - time_t timeout;
378   -
379   - protected:
380   -
381   - /// @brief Writes characters to the associated file from the put area
382   - int sync() override;
383   -
384   - /// @brief Writes characters to the associated output sequence from the put area.
385   - int overflow(int c) override;
386   -
387   - /*
388   - /// @brief Write information to log file.
389   - void info(const char *fmt, ...) const;
390   -
391   - /// @brief Write warning to log file.
392   - void warning(const char *fmt, ...) const;
393   -
394   - /// @brief Write error to log file.
395   - void error(const char *fmt, ...) const;
396   - */
397   -
398   - public:
399   - Host(const char *id = nullptr, const char *url = nullptr, time_t timeout = DEFAULT_TIMEOUT);
400   - ~Host();
401   -
402   - inline bool operator==(ConnectionState state) const noexcept {
403   - return session->getConnectionState() == state;
404   - }
405   -
406   - // Contents
407   -
408   - /**
409   - * @brief Input string parsing control char.
410   - */
411   - LIB3270_KEYBOARD_LOCK_STATE input(const char *text, int length = -1, const char control_char = '@');
412   -
413   - Host & push(int baddr, const std::string &text);
414   - Host & push(int row, int col, const std::string &text);
415   - Host & push(const std::string &text);
416   -
417   - Host & push(int baddr, const char *str, int len = -1);
418   - Host & push(int row, int col, const char *str, int len = -1);
419   - Host & push(const char *str, int len = -1);
420   -
421   - Host & pop(int baddr, std::string &text);
422   - Host & pop(int row, int col, std::string &text);
423   - Host & pop(std::string &text);
424   -
425   - std::string toString() const;
426   - std::string toString(int baddr, int len = -1, char lf = '\n') const;
427   - std::string toString(unsigned int row, unsigned int col, int len = -1, char lf = '\n') const;
428   -
429   - template<typename T>
430   - Host & push(T value) {
431   - session->push(value);
432   - sync();
433   - return *this;
434   - }
435   -
436   - template<typename T>
437   - Host & pop(T value) {
438   - sync();
439   - session->pop(value);
440   - return *this;
441   - }
442   -
443   - // Actions
444   - Host & connect(const char *url = nullptr);
445   - Host & disconnect();
446   - Host & waitForReady(time_t seconds);
447   -
448   - inline Host & waitForReady() {
449   - return waitForReady(this->timeout);
450   - }
451   -
452   - inline LIB3270_KEYBOARD_LOCK_STATE waitForKeyboardUnlock() noexcept {
453   - return this->session->waitForKeyboardUnlock(timeout);
454   - }
455   -
456   - /// @brief Execute action by name.
457   - inline Host & action(const char *action_name) {
458   - session->action(action_name);
459   - return *this;
460   - }
461   -
462   - inline ProgramMessage getProgramMessage() const {
463   - return session->getProgramMessage();
464   - }
465   -
466   - operator bool() const;
467   -
468   - inline operator ProgramMessage() const {
469   - return getProgramMessage();
470   - }
471   -
472   - inline ConnectionState getConnectionState() const {
473   - return session->getConnectionState();
474   - }
475   -
476   - bool isReady() const;
477   - bool isConnected() const;
478   -
479   - inline operator ConnectionState() const {
480   - return getConnectionState();
481   - }
482   -
483   - /// @brief Set cursor address.
484   - inline Host & setCursor(unsigned short addr) {
485   - session->setCursor(addr);
486   - return *this;
487   - }
488   -
489   - /// @brief Set cursor position.
490   - inline Host & setCursor(unsigned short row, unsigned short col) {
491   - session->setCursor(row,col);
492   - return *this;
493   - }
494   -
495   - /// @brief Get cursor address
496   - inline unsigned short getCursorAddress() {
497   - return session->getCursorAddress();
498   - }
499   -
500   - inline void setUnlockDelay(unsigned short delay) {
501   - return session->setUnlockDelay(delay);
502   - }
503   -
504   - inline void setLockOnOperatorError(bool lock = true) {
505   - return session->setLockOnOperatorError(lock);
506   - }
507   -
508   - inline void setCharSet(const char *charset) {
509   - return session->setCharSet(charset);
510   - }
511   -
512   - // Get properties
513   -
514   - /// @brief Get lib3270 version.
515   - inline std::string getVersion() const {
516   - return session->getVersion();
517   - }
518   -
519   - /// @brief Get lib3270 revision.
520   - std::string getRevision() const {
521   - return session->getRevision();
522   - }
523   -
524   - /// @brief Get LU Name.
525   - std::string getLUName() const {
526   - return session->getLUName();
527   - }
528   -
529   - inline LIB3270_KEYBOARD_LOCK_STATE getKeyboardLockState() const {
530   - return session->getKeyboardLockState();
531   - }
532   -
533   - // Actions
534   -
535   - /// @brief Send PF.
536   - inline Host & pfkey(unsigned short value) {
537   - session->pfkey(value);
538   - return *this;
539   - }
540   -
541   - /// @brief Send PA.
542   - inline Host & pakey(unsigned short value) {
543   - session->pakey(value);
544   - return *this;
545   - }
546   -
547   - /// @brief Request print
548   - inline Host & print(LIB3270_CONTENT_OPTION option = LIB3270_CONTENT_ALL) {
549   - session->print(option);
550   - return *this;
551   - }
552   -
553   - /// @brief Wait.
554   - inline Host & wait(unsigned short seconds) {
555   - session->wait(seconds);
556   - return *this;
557   - }
558   -
559   - /// @brief Wait for update.
560   - inline Host & waitForChange(unsigned short seconds) {
561   - session->waitForChange(seconds);
562   - return *this;
563   - }
564   -
565   - // Set contents.
566   -
567   - /// @brief Input string.
568   - ///
569   - /// Input the supplied string processing commands delimited by the control char in
570   - /// the same way of the old HLLAPI.
571   - ///
572   - /// @param text String with the text to input.
573   - /// @param control_char Control character used to identify commands.
574   - // Host & input(const char *text, const char control_char = '@');
575   -
576   - // Host & input(const char *text, size_t sz);
577   -
578   - /// @brief Set field at current position, jumps to next writable field.
579   - inline Host & push(const char *text) {
580   - session->push(text,-1);
581   - return *this;
582   - };
583   -
584   - /*
585   - // Event listeners
586   - inline Host & insert(Event::Type type, std::function <void(const Event &event)> listener) noexcept {
587   - session->insert(type, listener);
588   - return *this;
589   - }
590   - */
591   -
592   -
593   - };
594   -
595   - }
596   -
597   - TN3270_PUBLIC const char * toCharString(const TN3270::ProgramMessage programMessage);
598   - TN3270_PUBLIC const char * toCharString(const TN3270::ConnectionState connectionState);
599   - TN3270_PUBLIC const char * toCharString(const TN3270::Action action);
600   -
601   - template <typename T>
602   - inline TN3270_PUBLIC TN3270::Session & operator<<(TN3270::Session& session, const T value) {
603   - return session.push(value);
604   - }
605   -
606   - template <typename T>
607   - inline TN3270_PUBLIC TN3270::Session & operator>>(TN3270::Session& session, const T value) {
608   - return session.pop(value);
609   - }
610   -
611   - template <typename T>
612   - inline TN3270_PUBLIC TN3270::Host & operator<<(TN3270::Host& host, const T value) {
613   - return host.push(value);
614   - }
615   -
616   - inline std::ostream & operator<<(std::ostream &stream, const TN3270::Host& host) {
617   - stream << host.toString();
618   - return stream;
619   - }
620   -
621   -
622   -#endif
623   -
624   -#endif // LIB3270_IPC_H_INCLUDED
doxygen/doxyfile.in
... ... @@ -140,7 +140,7 @@ FULL_PATH_NAMES = YES
140 140 # relative paths, which will be relative from the directory where doxygen is
141 141 # started.
142 142  
143   -STRIP_FROM_PATH = @BASEDIR@
  143 +STRIP_FROM_PATH = @BASEDIR@/client/src
144 144  
145 145 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
146 146 # the path mentioned in the documentation of a class, which tells
... ... @@ -149,7 +149,7 @@ STRIP_FROM_PATH = @BASEDIR@
149 149 # definition is used. Otherwise one should specify the include paths that
150 150 # are normally passed to the compiler using the -I flag.
151 151  
152   -STRIP_FROM_INC_PATH =
  152 +STRIP_FROM_INC_PATH = @BASEDIR@/client/src
153 153  
154 154 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
155 155 # (but less readable) file names. This can be useful if your file system
... ... @@ -659,7 +659,7 @@ WARN_LOGFILE = @BASEDIR@/doxygen/doxygen.log
659 659 # directories like "/usr/src/myproject". Separate the files or directories
660 660 # with spaces.
661 661  
662   -INPUT = @BASEDIR@
  662 +INPUT = @BASEDIR@/client/src
663 663  
664 664 # This tag can be used to specify the character encoding of the source files
665 665 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
... ... @@ -1539,7 +1539,7 @@ INCLUDE_FILE_PATTERNS =
1539 1539 # undefined via #undef or recursively expanded use the := operator
1540 1540 # instead of the = operator.
1541 1541  
1542   -PREDEFINED =
  1542 +PREDEFINED = __cplusplus
1543 1543  
1544 1544 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1545 1545 # this tag can be used to specify a list of macro names that should be expanded.
... ...
server/Makefile.in
... ... @@ -91,11 +91,11 @@ BINRLS=$(BINDIR)/Release
91 91  
92 92 DEPENDS= \
93 93 Makefile \
94   - $(BASEDIR)/common/src/include/*.h \
95   - $(BASEDIR)/common/src/include/lib3270/*.h
  94 + $(BASEDIR)/common/src/include/*.h
96 95  
97 96 CFLAGS= \
98 97 @CFLAGS@ \
  98 + -I$(BASEDIR)/server/src/include \
99 99 -I$(BASEDIR)/common/src/include \
100 100 -DBUILD_DATE=`date +%Y%m%d` \
101 101 @LIB3270_CFLAGS@ \
... ...
server/src/core/constants.c
... ... @@ -34,7 +34,7 @@
34 34  
35 35 #include <lib3270.h>
36 36 #include <lib3270/actions.h>
37   -#include <lib3270/ipc-glib.h>
  37 +#include <ipc-glib.h>
38 38  
39 39 const IPC_METHOD_INT_ARG * ipc3270_get_int_arg_methods() {
40 40  
... ...
server/src/core/getproperties.c
... ... @@ -33,7 +33,7 @@
33 33 */
34 34  
35 35 #include <config.h>
36   -#include <lib3270/ipc-glib.h>
  36 +#include <ipc-glib.h>
37 37 #include <lib3270.h>
38 38 #include <lib3270/properties.h>
39 39 #include <lib3270/toggle.h>
... ...
server/src/core/linux/gobject.h
... ... @@ -47,7 +47,7 @@
47 47 #include <gio/gio.h>
48 48  
49 49 #include <lib3270.h>
50   - #include <lib3270/ipc-glib.h>
  50 + #include <ipc-glib.h>
51 51  
52 52 G_BEGIN_DECLS
53 53  
... ...
server/src/core/linux/start.c
... ... @@ -34,7 +34,7 @@
34 34  
35 35 #include "gobject.h"
36 36 #include <lib3270.h>
37   -#include <lib3270/ipc-glib.h>
  37 +#include <ipc-glib.h>
38 38  
39 39 #include <dbus/dbus-glib.h>
40 40 #include <dbus/dbus-glib-bindings.h>
... ...
server/src/core/linux/stop.c
... ... @@ -34,7 +34,7 @@
34 34  
35 35 #include "gobject.h"
36 36 #include <lib3270.h>
37   -#include <lib3270/ipc-glib.h>
  37 +#include <ipc-glib.h>
38 38  
39 39 #include <dbus/dbus-glib.h>
40 40 #include <dbus/dbus-glib-bindings.h>
... ...
server/src/core/methods/private.h
... ... @@ -38,7 +38,7 @@
38 38  
39 39 #include <config.h>
40 40 #include <lib3270.h>
41   - #include <lib3270/ipc-glib.h>
  41 + #include <ipc-glib.h>
42 42  
43 43 G_GNUC_INTERNAL int ipc3270_method_connect(GObject *session, GVariant *request, GObject *response, GError **error);
44 44 G_GNUC_INTERNAL int ipc3270_method_disconnect(GObject *session, GVariant *request, GObject *response, GError **error);
... ...
server/src/core/setproperties.c
... ... @@ -33,7 +33,7 @@
33 33 */
34 34  
35 35 #include <config.h>
36   -#include <lib3270/ipc-glib.h>
  36 +#include <ipc-glib.h>
37 37 #include <lib3270.h>
38 38 #include <lib3270/properties.h>
39 39 #include <lib3270/toggle.h>
... ...
server/src/core/tools.c
... ... @@ -28,7 +28,7 @@
28 28 */
29 29  
30 30 #include <lib3270.h>
31   -#include <lib3270/ipc-glib.h>
  31 +#include <ipc-glib.h>
32 32  
33 33 /*--[ Implement ]------------------------------------------------------------------------------------*/
34 34  
... ...
server/src/core/windows/gobject.c
... ... @@ -31,7 +31,7 @@
31 31 #include <lib3270.h>
32 32 #include <lib3270/actions.h>
33 33 #include <lib3270/properties.h>
34   -#include <lib3270/ipc-glib.h>
  34 +#include <ipc-glib.h>
35 35 #include <v3270.h>
36 36  
37 37 /*--[ Widget definition ]----------------------------------------------------------------------------*/
... ...
server/src/core/windows/gobject.h
... ... @@ -48,7 +48,7 @@
48 48 #include <gio/gio.h>
49 49  
50 50 #include <lib3270.h>
51   - #include <lib3270/ipc-glib.h>
  51 + #include <ipc-glib.h>
52 52  
53 53 #define PIPE_BUFFER_LENGTH 8192
54 54  
... ...
server/src/core/windows/inout.c
... ... @@ -35,7 +35,7 @@
35 35 */
36 36  
37 37 #include <config.h>
38   - #include <lib3270/ipc-glib.h>
  38 + #include <ipc-glib.h>
39 39 #include <string.h>
40 40 #include <stdlib.h>
41 41  
... ...
server/src/core/windows/pipesource.c
... ... @@ -28,7 +28,7 @@
28 28 */
29 29  
30 30 #include "gobject.h"
31   -#include <lib3270/ipc-glib.h>
  31 +#include <ipc-glib.h>
32 32 #include <lib3270/trace.h>
33 33 #include <lib3270/toggle.h>
34 34  
... ...
server/src/core/windows/start.c
... ... @@ -31,7 +31,7 @@
31 31 #include <lib3270.h>
32 32 #include <lib3270/actions.h>
33 33 #include <lib3270/properties.h>
34   -#include <lib3270/ipc-glib.h>
  34 +#include <ipc-glib.h>
35 35  
36 36 void ipc3270_export_object(GObject *object, const char *name, GError G_GNUC_UNUSED(**error)) {
37 37  
... ...
server/src/core/windows/stop.c
... ... @@ -34,7 +34,7 @@
34 34  
35 35 #include "gobject.h"
36 36 #include <lib3270.h>
37   -#include <lib3270/ipc-glib.h>
  37 +#include <ipc-glib.h>
38 38  
39 39 void ipc3270_release_object(ipc3270 *object) {
40 40  
... ...
server/src/include/ipc-glib.h 0 → 100644
... ... @@ -0,0 +1,138 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob
  5 + * o nome G3270.
  6 + *
  7 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  8 + *
  9 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  10 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  11 + * Free Software Foundation.
  12 + *
  13 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  14 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  15 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  16 + * obter mais detalhes.
  17 + *
  18 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  19 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  20 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  21 + *
  22 + * Este programa está nomeado como - e possui - linhas de código.
  23 + *
  24 + * Contatos:
  25 + *
  26 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  27 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  28 + *
  29 + */
  30 +
  31 + /**
  32 + * @brief Common definitions for pw3270 IPC plugin.
  33 + *
  34 + * @author Perry Werneck <perry.werneck@gmail.com>
  35 + *
  36 + */
  37 +
  38 +#ifndef PW3270_IPC_H_INCLUDED
  39 +
  40 + #define PW3270_IPC_H_INCLUDED
  41 +
  42 + #ifdef _WIN32
  43 +
  44 + #define PW3270_IPC_SESSION_BUS_NAME "\\\\.\\pipe\\%s\\%c"
  45 +
  46 + #else
  47 +
  48 + #define PW3270_IPC_SESSION_BUS_NAME "br.com.bb.%s.%c"
  49 + #define PW3270_IPC_SESSION_INTERFACE_NAME "br.com.bb.tn3270.session"
  50 + #define PW3270_IPC_SESSION_OBJECT_PATH "/br/com/bb/tn3270/session"
  51 +
  52 + #define PW3270_IPC_SERVICE_BUS_NAME "br.com.bb.tn3270.service"
  53 + #define PW3270_IPC_SERVICE_INTERFACE_NAME "br.com.bb.tn3270.service"
  54 + #define PW3270_IPC_SERVICE_OBJECT_PATH "/br/com/bb/tn3270/service"
  55 +
  56 + #endif // _WIN32
  57 +
  58 + #include <glib.h>
  59 + #include <gtk/gtk.h>
  60 + #include <lib3270.h>
  61 +
  62 + G_BEGIN_DECLS
  63 +
  64 + #define GLIB_TYPE_IPC3270_RESPONSE (ipc3270Response_get_type ())
  65 + #define IPC3270_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLIB_TYPE_IPC3270_RESPONSE, ipc3270Response))
  66 + #define IPC3270_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLIB_TYPE_IPC3270_RESPONSE, ipc3270ResponseClass))
  67 + #define IS_IPC3270_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLIB_TYPE_IPC3270_RESPONSE))
  68 + #define IS_IPC3270_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLIB_TYPE_IPC3270_RESPONSE))
  69 + #define IPC3270_RESPONSE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS ((obj), GLIB_TYPE_IPC3270_RESPONSE, ipc3270ResponseClass))
  70 +
  71 + typedef struct _ipc3270Response ipc3270Response;
  72 + typedef struct _ipc3270ResponseClass ipc3270ResponseClass;
  73 +
  74 + GObject * ipc3270_response_new();
  75 +
  76 + void ipc3270_response_append_int32(GObject *object, gint32 value);
  77 + void ipc3270_response_append_uint32(GObject *object, guint32 value);
  78 + void ipc3270_response_append_string(GObject *object, const gchar *text);
  79 + gboolean ipc3270_response_has_values(GObject *object);
  80 + GVariant * ipc3270_response_steal_value(GObject *object);
  81 +
  82 +
  83 + #define GLIB_TYPE_IPC3270 (ipc3270_get_type ())
  84 + #define IPC3270(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLIB_TYPE_IPC3270, ipc3270))
  85 + #define IPC3270_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLIB_TYPE_IPC3270, ipc3270Class))
  86 + #define IS_IPC3270(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLIB_TYPE_IPC3270))
  87 + #define IS_IPC3270_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLIB_TYPE_IPC3270))
  88 + #define IPC3270_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GLIB_TYPE_IPC3270, ipc3270Class))
  89 +
  90 + typedef struct _ipc3270 ipc3270;
  91 + typedef struct _ipc3270Class ipc3270Class;
  92 +
  93 + GObject * ipc3270_new();
  94 + GType ipc3270_get_type(void);
  95 + void ipc3270_set_terminal_widget(GObject *object, GtkWidget *widget);
  96 + void ipc3270_export_object(GObject *object, const char *name, GError **error);
  97 +
  98 + void ipc3270_add_terminal_introspection(GString *string);
  99 +
  100 + const gchar * ipc3270_get_display_charset(GObject *object);
  101 + H3270 * ipc3270_get_session(GObject *object);
  102 +
  103 + GQuark ipc3270_get_error_domain(GObject *object);
  104 +
  105 + void ipc3270_set_error(GObject *object, int errcode, GError **error);
  106 +
  107 + int ipc3270_method_call(GObject *object, const gchar *method_name, GVariant *request, GObject *response, GError **error);
  108 + gboolean ipc3270_set_property(GObject *object, const gchar *property_name, GVariant *value, GError **error);
  109 + GVariant * ipc3270_get_property(GObject *object, const gchar *property_name, GError **error);
  110 +
  111 + #ifdef _WIN32
  112 + unsigned char * ipc3270_pack(const gchar *name, int id, GVariant *values, size_t * szPacket);
  113 + unsigned char * ipc3270_pack_value(const gchar *name, int id, GVariant *value, size_t * szPacket);
  114 + unsigned char * ipc3270_pack_error(const GError *error, size_t * szPacket);
  115 + GVariant * ipc3270_unpack(const unsigned char *packet, int *id);
  116 + #endif // _WIN32
  117 +
  118 + G_END_DECLS
  119 +
  120 + #if ! GLIB_CHECK_VERSION(2,44,0)
  121 + G_GNUC_INTERNAL void ipc3270_autoptr_cleanup_generic_gfree(void *p);
  122 + #define g_autofree __attribute__((cleanup(ipc3270_autoptr_cleanup_generic_gfree)))
  123 + #endif // ! GLIB(2,44,0)
  124 +
  125 + #ifdef DEBUG
  126 + #define debug( fmt, ... ) fprintf(stderr,"%s(%d) " fmt "\n", __FILE__, (int) __LINE__, __VA_ARGS__ ); fflush(stderr);
  127 + #else
  128 + #define debug(...) /* __VA_ARGS */
  129 + #endif
  130 +
  131 + typedef struct _ipc_method_int_arg {
  132 + const gchar *name;
  133 + int (*call)(H3270 *hSession, int keycode);
  134 + } IPC_METHOD_INT_ARG;
  135 +
  136 + const IPC_METHOD_INT_ARG * ipc3270_get_int_arg_methods();
  137 +
  138 +#endif // PW3270_IPC_H_INCLUDED
... ...
server/src/plugin/plugin.c
... ... @@ -43,7 +43,7 @@
43 43  
44 44 #include "private.h"
45 45 #include <v3270.h>
46   - #include <lib3270/ipc-glib.h>
  46 + #include <ipc-glib.h>
47 47  
48 48 int pw3270_plugin_stop(GtkWidget G_GNUC_UNUSED(*window), GtkWidget *terminal) {
49 49 debug("%s(%p)",__FUNCTION__,g_object_get_data(G_OBJECT(terminal),"ipc-object-info"));
... ...
server/src/plugin/private.h
... ... @@ -38,7 +38,7 @@
38 38 #define PRIVATE_H_INCLUDED
39 39  
40 40 #include <config.h>
41   - #include <lib3270/ipc-glib.h>
  41 + #include <ipc-glib.h>
42 42  
43 43 int pw3270_plugin_start(GtkWidget *window, GtkWidget *terminal);
44 44 int pw3270_plugin_stop(GtkWidget *window, GtkWidget *terminal);
... ...
server/src/service/getproperties.c
... ... @@ -34,7 +34,7 @@
34 34  
35 35 #include <config.h>
36 36 #include "private.h"
37   -#include <lib3270/ipc-glib.h>
  37 +#include <ipc-glib.h>
38 38 #include <lib3270.h>
39 39 #include <lib3270/properties.h>
40 40  
... ...
server/src/service/linux/start.c
... ... @@ -32,7 +32,7 @@
32 32 */
33 33  
34 34 #include <config.h>
35   -#include <lib3270/ipc-glib.h>
  35 +#include <ipc-glib.h>
36 36 #include "../private.h"
37 37  
38 38 static GDBusNodeInfo *introspection_data = NULL;
... ...
server/src/service/methods.c
... ... @@ -35,7 +35,7 @@
35 35 #include <config.h>
36 36 #include "private.h"
37 37 #include <string.h>
38   -#include <lib3270/ipc-glib.h>
  38 +#include <ipc-glib.h>
39 39 #include <lib3270.h>
40 40 #include <lib3270/actions.h>
41 41  
... ...
server/src/service/service.c
... ... @@ -30,7 +30,7 @@
30 30 #include <errno.h>
31 31 #include <string.h>
32 32 #include <stdlib.h>
33   -#include <lib3270/ipc-glib.h>
  33 +#include <ipc-glib.h>
34 34  
35 35 #ifndef _WIN32
36 36 #include <signal.h>
... ...
server/src/service/session.c
... ... @@ -28,7 +28,7 @@
28 28 */
29 29  
30 30 #include "private.h"
31   -#include <lib3270/ipc-glib.h>
  31 +#include <ipc-glib.h>
32 32  
33 33 struct _session {
34 34 GObject parent;
... ...
server/src/service/setproperties.c
... ... @@ -34,7 +34,7 @@
34 34  
35 35 #include <config.h>
36 36 #include "private.h"
37   -#include <lib3270/ipc-glib.h>
  37 +#include <ipc-glib.h>
38 38 #include <lib3270.h>
39 39 #include <lib3270/properties.h>
40 40  
... ...
server/src/testprogram/testprogram.c
... ... @@ -37,7 +37,7 @@
37 37 #include <config.h>
38 38 #include <v3270.h>
39 39 #include <v3270/trace.h>
40   - #include <lib3270/ipc-glib.h>
  40 + #include <ipc-glib.h>
41 41 #include <string.h>
42 42 #include <stdlib.h>
43 43 #include <glib.h>
... ...