genode/base/include/rom_session/connection.h
Norman Feske f32a97da38 Use filename as default label for ROM connections
By assigning the file name as label, we may become able to remove the
filename argument in the future by just interpreting the last part of
the label as filename. By keeping only the label, we won't need to
consider conditional routing (via <if-arg>) based on session arguments
other than the label anymore.
2014-01-27 18:54:07 +01:00

61 lines
1.4 KiB
C++

/*
* \brief Connection to ROM file service
* \author Norman Feske
* \date 2008-08-22
*/
/*
* Copyright (C) 2008-2013 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__ROM_SESSION__CONNECTION_H_
#define _INCLUDE__ROM_SESSION__CONNECTION_H_
#include <rom_session/client.h>
#include <base/connection.h>
#include <base/printf.h>
namespace Genode {
class Rom_connection : public Connection<Rom_session>,
public Rom_session_client
{
public:
class Rom_connection_failed : public Parent::Exception { };
private:
Rom_session_capability _create_session(const char *filename, const char *label)
{
try {
return session("ram_quota=4K, filename=\"%s\", label=\"%s\"",
filename, label ? label: filename); }
catch (...) {
PERR("Could not open file \"%s\"", filename);
throw Rom_connection_failed();
}
}
public:
/**
* Constructor
*
* \param filename name of ROM file
* \param label initial session label
*
* \throw Rom_connection_failed
*/
Rom_connection(const char *filename, const char *label = 0) :
Connection<Rom_session>(_create_session(filename, label)),
Rom_session_client(cap())
{ }
};
}
#endif /* _INCLUDE__ROM_SESSION__CONNECTION_H_ */