/*
 * \brief  Client-side signal session interface
 * \author Norman Feske
 * \date   2009-08-05
 */

/*
 * Copyright (C) 2009-2012 Genode Labs GmbH
 *
 * This file is part of the Genode OS framework, which is distributed
 * under the terms of the GNU General Public License version 2.
 */

#ifndef _INCLUDE__SIGNAL_SESSION__CLIENT_H_
#define _INCLUDE__SIGNAL_SESSION__CLIENT_H_

#include <signal_session/capability.h>
#include <signal_session/signal_session.h>
#include <base/rpc_client.h>
#include <signal_session/source_client.h>

namespace Genode {

	struct Signal_session_client : Rpc_client<Signal_session>
	{
		explicit Signal_session_client(Signal_session_capability session)
		: Rpc_client<Signal_session>(session) { }

		Signal_source_capability signal_source() {
			return call<Rpc_signal_source>(); }

		Signal_context_capability alloc_context(long imprint) {
			return call<Rpc_alloc_context>(imprint); }

		void free_context(Signal_context_capability cap) {
			call<Rpc_free_context>(cap); }

		void submit(Signal_context_capability receiver, unsigned cnt = 1) {
			call<Rpc_submit>(receiver, cnt); }
	};
}

#endif /* _INCLUDE__CAP_SESSION__CLIENT_H_ */
