From 409647dc0d0e5dec2a52d2c9f6896fae2ce82f1d Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Thu, 8 Aug 2019 16:34:54 -0300 Subject: [PATCH] Adding more methods. --- client/src/include/ipc-client-internals.h | 2 ++ client/src/session/local/session.cc | 14 ++++++++++++++ client/src/session/remote/session.cc | 7 +++++++ common/src/include/lib3270/ipc.h | 8 ++++++++ 4 files changed, 31 insertions(+), 0 deletions(-) diff --git a/client/src/include/ipc-client-internals.h b/client/src/include/ipc-client-internals.h index 9d2beae..f9e3917 100644 --- a/client/src/include/ipc-client-internals.h +++ b/client/src/include/ipc-client-internals.h @@ -194,6 +194,7 @@ TN3270::Session & setCursorPosition(unsigned short addr) override; TN3270::Session & setCursorPosition(unsigned short row, unsigned short col) override; + unsigned short getCursorPosition() override; TN3270::Session & pfkey(unsigned short value); TN3270::Session & pakey(unsigned short value); @@ -361,6 +362,7 @@ TN3270::Session & setCursorPosition(unsigned short addr) override; TN3270::Session & setCursorPosition(unsigned short row, unsigned short col) override; + unsigned short getCursorPosition() override; TN3270::Session & pfkey(unsigned short value); TN3270::Session & pakey(unsigned short value); diff --git a/client/src/session/local/session.cc b/client/src/session/local/session.cc index cbafc86..5b7e3b9 100644 --- a/client/src/session/local/session.cc +++ b/client/src/session/local/session.cc @@ -399,6 +399,20 @@ return *this; } + /// @brief Get cursor address. + /// + /// @return + unsigned short Local::Session::getCursorPosition() { + + unsigned int position = lib3270_get_cursor_address(hSession); + + if(!position) + throw std::system_error(errno, std::system_category()); + + return position; + } + + /// @brief Set cursor position. /// /// @param row New cursor row. diff --git a/client/src/session/remote/session.cc b/client/src/session/remote/session.cc index 6a23893..28bf153 100644 --- a/client/src/session/remote/session.cc +++ b/client/src/session/remote/session.cc @@ -338,6 +338,13 @@ } + unsigned short IPC::Session::getCursorPosition() { + + // TODO: Implement it. + throw std::system_error((int) ENOTSUP, std::system_category()); + + } + /// @brief Set cursor position. /// /// @param row New cursor row. diff --git a/common/src/include/lib3270/ipc.h b/common/src/include/lib3270/ipc.h index 22afcd2..5a92313 100644 --- a/common/src/include/lib3270/ipc.h +++ b/common/src/include/lib3270/ipc.h @@ -271,6 +271,9 @@ /// @brief Set cursor position. virtual TN3270::Session & setCursorPosition(unsigned short row, unsigned short col) = 0; + /// @brief Get cursor address + virtual unsigned short getCursorPosition() = 0; + /// @brief Send PF. virtual Session & pfkey(unsigned short value) = 0; @@ -371,6 +374,11 @@ session->setCursorPosition(row,col); } + /// @brief Get cursor address + inline unsigned short getCursorPosition() { + return session->getCursorPosition(); + } + // Get properties /// @brief Get lib3270 version. -- libgit2 0.21.2