Adapter for connecting input and event servers

This is an intermediate helper component for the transition of input
servers into event clients. It works analogously to the
input_event_bridge but it connects servers instead of clients.
In particular, it can act as glue between a traditional input driver
that provides an input service and the event filter that provides an
event service. Thanks to this component, each driver can be migrated to
the event-client interface individually.

Issue #3827
This commit is contained in:
Norman Feske 2020-07-16 15:58:34 +02:00
parent 7932c76d85
commit 7bac1ec7e5
5 changed files with 58 additions and 0 deletions

View File

@ -0,0 +1,2 @@
SRC_DIR = src/app/input_event_client
include $(GENODE_DIR)/repos/base/recipes/src/content.inc

View File

@ -0,0 +1 @@
2020-07-16 e6f7f44533e117edd6eb6c79d271ccacef345bb1

View File

@ -0,0 +1,4 @@
base
os
event_session
input_session

View File

@ -0,0 +1,48 @@
/*
* \brief Application for connecting an input server with an event server
* \author Norman Feske
* \date 2020-07-16
*/
/*
* Copyright (C) 2020 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
/* Genode includes */
#include <event_session/connection.h>
#include <input_session/connection.h>
#include <base/component.h>
namespace Input_event_client {
using namespace Genode;
struct Main;
}
struct Input_event_client::Main
{
Env &_env;
Input::Connection _input { _env };
Event::Connection _event { _env };
Signal_handler<Main> _input_handler { _env.ep(), *this, &Main::_handle_input };
void _handle_input()
{
_event.with_batch([&] (Event::Session_client::Batch &batch) {
_input.for_each_event([&] (Input::Event const &event) {
batch.submit(event); }); });
}
Main(Env &env) : _env(env) { _input.sigh(_input_handler); }
};
void Component::construct(Genode::Env &env)
{
static Input_event_client::Main inst(env);
}

View File

@ -0,0 +1,3 @@
TARGET = input_event_client
SRC_CC = main.cc
LIBS = base