Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
console.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License version 2.1 as published by the Free Software Foundation.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  * Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public
14  * License along with this library; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16  */
17 
24 #ifndef LXCPP_COMMANDS_CONSOLE_HPP
25 #define LXCPP_COMMANDS_CONSOLE_HPP
26 
29 #include "lxcpp/terminal.hpp"
30 
32 #include "utils/signalfd.hpp"
33 
34 #include <signal.h>
35 #include <array>
36 
37 
38 namespace lxcpp {
39 
40 
41 class Console final: Command {
42 public:
49  Console(TerminalsConfig &terminals, unsigned int terminalNum = 0);
50  ~Console();
51 
52  void execute();
53 
54 private:
55  enum class ConsoleQuitReason : int {
56  NONE = 0,
57  USER = 1,
58  HUP = 2,
59  ERR = 3
60  };
61  enum class ConsoleChange : int {
62  NEXT = 0,
63  PREV = 1
64  };
65  static const int IO_BUFFER_SIZE = 1024;
66 
73  std::vector<std::pair<int, struct ::sigaction>> mSignalStates;
74  struct termios mTTYState;
75 
80 
81  void setupTTY();
82  void restoreTTY();
83  void resizePTY();
84  void onPTY(int fd, cargo::ipc::epoll::Events events);
85  void onStdInput(int fd, cargo::ipc::epoll::Events events);
86  void onStdOutput(int fd, cargo::ipc::epoll::Events events);
88  bool handleSpecial(char key);
89  void consoleChange(ConsoleChange direction);
90  int getCurrentFD() const;
91 };
92 
93 
94 } // namespace lxcpp
95 
96 
97 #endif // LXCPP_COMMANDS_CONSOLE_HPP
cargo::ipc::epoll::EventPoll mEventPoll
Definition: console.hpp:71
void consoleChange(ConsoleChange direction)
Definition: console.cpp:260
Console(TerminalsConfig &terminals, unsigned int terminalNum=0)
Launches the console on the current terminal.
Definition: console.cpp:44
C++ epoll wrapper.
char appToTerm[IO_BUFFER_SIZE]
Definition: console.hpp:76
Definition: console.hpp:41
void checkForError(cargo::ipc::epoll::Events events)
Definition: console.cpp:213
TerminalsConfig & mTerminals
Definition: console.hpp:67
bool handleSpecial(char key)
Definition: console.cpp:228
int getCurrentFD() const
Definition: console.cpp:286
Signalfd wrapper.
void setupTTY()
Definition: console.cpp:116
void onStdInput(int fd, cargo::ipc::epoll::Events events)
Definition: console.cpp:177
Terminal helpers headers.
struct termios mTTYState
Definition: console.hpp:74
bool mServiceMode
Definition: console.hpp:69
~Console()
Definition: console.cpp:61
ConsoleChange
Definition: console.hpp:61
std::string key(const Arg1 &a1, const Args &...args)
Concatenates all parameters into one std::string.
Definition: kvstore-visitor-utils.hpp:60
utils::SignalFD mSignalFD
Definition: console.hpp:72
int termToAppOffset
Definition: console.hpp:79
SignalFD takes control over handling signals sent to the thread.
Definition: signalfd.hpp:47
Terminal configuration.
Command interface definition.
int mTerminalNum
Definition: console.hpp:68
void restoreTTY()
Definition: console.cpp:139
void resizePTY()
Definition: console.cpp:131
void execute()
Definition: console.cpp:65
std::vector< std::pair< int, struct::sigaction > > mSignalStates
Definition: console.hpp:73
Definition: command.hpp:29
unsigned int Events
bitmask of EPOLL* constants
Definition: events.hpp:39
void onStdOutput(int fd, cargo::ipc::epoll::Events events)
Definition: console.cpp:198
char termToApp[IO_BUFFER_SIZE]
Definition: console.hpp:78
This class waits on registered file descriptor for events.
Definition: event-poll.hpp:47
int appToTermOffset
Definition: console.hpp:77
ConsoleQuitReason mQuitReason
Definition: console.hpp:70
ConsoleQuitReason
Definition: console.hpp:55
Definition: terminal-config.hpp:57
void onPTY(int fd, cargo::ipc::epoll::Events events)
Definition: console.cpp:150
static const int IO_BUFFER_SIZE
Definition: console.hpp:65