MCPcopy Create free account
hub / github.com/deskflow/deskflow / Server

Method Server

src/lib/server/Server.cpp:42–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40//
41
42Server::Server(ServerConfig &config, PrimaryClient *primaryClient, deskflow::Screen *screen, IEventQueue *events)
43 : m_primaryClient(primaryClient),
44 m_active(primaryClient),
45 m_config(&config),
46 m_inputFilter(config.getInputFilter()),
47 m_screen(screen),
48 m_events(events)
49{
50 // must have a primary client and it must have a canonical name
51 assert(m_primaryClient != nullptr);
52 assert(config.isScreen(primaryClient->getName()));
53 assert(m_screen != nullptr);
54
55 std::string primaryName = getName(primaryClient);
56
57 // clear clipboards
58 for (auto &clipboard : m_clipboards) {
59 clipboard.m_clipboardOwner = primaryName;
60 clipboard.m_clipboardSeqNum = m_seqNum;
61 if (clipboard.m_clipboard.open(0)) {
62 clipboard.m_clipboard.empty();
63 clipboard.m_clipboard.close();
64 }
65 clipboard.m_clipboardData = clipboard.m_clipboard.marshall();
66 }
67
68 // install event handlers
69 m_events->addHandler(EventTypes::Timer, this, [this](const auto &) { handleSwitchWaitTimeout(); });
70 m_events->addHandler(EventTypes::KeyStateKeyDown, m_inputFilter, [this](const auto &e) { handleKeyDownEvent(e); });
71 m_events->addHandler(EventTypes::KeyStateKeyUp, m_inputFilter, [this](const auto &e) { handleKeyUpEvent(e); });
72 m_events->addHandler(EventTypes::KeyStateKeyRepeat, m_inputFilter, [this](const auto &e) {
73 handleKeyRepeatEvent(e);
74 });
75 m_events->addHandler(EventTypes::PrimaryScreenButtonDown, m_inputFilter, [this](const auto &e) {
76 handleButtonDownEvent(e);
77 });
78 m_events->addHandler(EventTypes::PrimaryScreenButtonUp, m_inputFilter, [this](const auto &e) {
79 handleButtonUpEvent(e);
80 });
81 m_events->addHandler(
82 EventTypes::PrimaryScreenMotionOnPrimary, m_primaryClient->getEventTarget(),
83 [this](const auto &e) { handleMotionPrimaryEvent(e); }
84 );
85 m_events->addHandler(
86 EventTypes::PrimaryScreenMotionOnSecondary, m_primaryClient->getEventTarget(),
87 [this](const auto &e) { handleMotionSecondaryEvent(e); }
88 );
89 m_events->addHandler(EventTypes::PrimaryScreenWheel, m_primaryClient->getEventTarget(), [this](const auto &e) {
90 handleWheelEvent(e);
91 });
92 m_events->addHandler(
93 EventTypes::PrimaryScreenSaverActivated, m_primaryClient->getEventTarget(),
94 [this](const auto &) { onScreensaver(true); }
95 );
96 m_events->addHandler(
97 EventTypes::PrimaryScreenSaverDeactivated, m_primaryClient->getEventTarget(),
98 [this](const auto &) { onScreensaver(false); }
99 );

Callers

nothing calls this directly

Calls 14

getInputFilterMethod · 0.80
isScreenMethod · 0.80
addHandlerMethod · 0.80
setPrimaryClientMethod · 0.80
getToggleMaskMethod · 0.80
getNameMethod · 0.45
openMethod · 0.45
emptyMethod · 0.45
closeMethod · 0.45
marshallMethod · 0.45
getEventTargetMethod · 0.45
fakeInputBeginMethod · 0.45

Tested by

no test coverage detected