2015-07-17 22:54:23 +03:00
|
|
|
/*
|
|
|
|
* Copyright 2015 Haiku, Inc. All rights reserved.
|
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*
|
|
|
|
* Authors:
|
|
|
|
* Axel Dörfler, axeld@pinc-software.de
|
|
|
|
*
|
|
|
|
* Corresponds to:
|
|
|
|
* headers/private/app/LaunchRoster.h
|
|
|
|
* src/kits/app/LaunchRoster.cpp
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\file LaunchRoster.h
|
|
|
|
\ingroup app
|
|
|
|
\ingroup libbe
|
|
|
|
\brief Provides BLaunchRoster class.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\class BLaunchRoster
|
|
|
|
\ingroup app
|
|
|
|
\ingroup libbe
|
|
|
|
\brief The BLaunchRoster class lets you communicate with the launch_daemon.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn BLaunchRoster::BLaunchRoster()
|
|
|
|
\brief Creates a new BLaunchRoster and sets up the connection to the
|
|
|
|
launch_daemon.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn BLaunchRoster::~BLaunchRoster()
|
|
|
|
\brief Does nothing.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\name Querying
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//! @{
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::GetData(BMessage& data)
|
|
|
|
\brief Returns the launch data for your own application.
|
|
|
|
|
|
|
|
If your application has any data stored by the launch_daemon, you can
|
|
|
|
retrieve this data with this method. Typically, this will contain the
|
|
|
|
communication channels the launch_daemon created for your application,
|
|
|
|
if any.
|
|
|
|
|
|
|
|
\return \c B_OK if the launch data has been received successfully.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::GetData(const char* signature, BMessage& data)
|
|
|
|
\brief Returns the launch data for the specified application.
|
|
|
|
|
|
|
|
If the application has any data stored by the launch_daemon, you can
|
|
|
|
retrieve this data with this method. Typically, this will contain the
|
|
|
|
communication channels the launch_daemon created for this application,
|
|
|
|
if any.
|
|
|
|
|
|
|
|
\param signature The app \a signature.
|
2016-04-27 21:09:50 +03:00
|
|
|
\param data BMessage object to store the launch data in.
|
2015-07-17 22:54:23 +03:00
|
|
|
\return \c B_OK if the launch data has been received successfully.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::GetPort(const char* name)
|
|
|
|
\brief Returns the named or default port for your application.
|
|
|
|
|
|
|
|
If the launch_daemon created a port for your application with the given
|
|
|
|
name, you can retrieve it with this method. Note that this is not the
|
|
|
|
actual port name, but the name the port has been registered with with
|
|
|
|
the launch_daemon.
|
|
|
|
|
|
|
|
\param name The name of the port, if \c NULL, the default port is returned.
|
|
|
|
\return The port ID, if successful, or an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::GetPort(const char* signature, const char* name)
|
|
|
|
\brief Returns the named or default port for the specified application.
|
|
|
|
|
|
|
|
If the launch_daemon created a port for the application with the given name,
|
|
|
|
you can retrieve it with this method. Note that this is not the actual port
|
|
|
|
name, but the name the port has been registered with with the launch_daemon.
|
|
|
|
|
|
|
|
\param signature The app \a signature.
|
|
|
|
\param name The name of the port, if \c NULL, the default port is returned.
|
|
|
|
\return The port ID, if successful, or an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//! @}
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\name Controlling
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//! @{
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::Target(const char* name, const BMessage& data,
|
|
|
|
const char* baseName)
|
|
|
|
\brief Launches the specified target (or a clone of it), and attaches
|
|
|
|
the specified data to it.
|
|
|
|
|
|
|
|
The \a baseName will, if non \c NULL, cause the target by this name to
|
|
|
|
be cloned, and named \a name. This allows you to create new targets with
|
|
|
|
different \a data.
|
|
|
|
For example. the app_server is using this to create different login
|
|
|
|
targets for different displays.
|
|
|
|
|
|
|
|
\param name The target name, as specified in the configuration files
|
|
|
|
\param data Additional data you can pass to the target. This argument
|
|
|
|
is currently ignored.
|
|
|
|
\param baseName The name of the target to be cloned. Use \c NULL if you
|
|
|
|
do not want to clone the target.
|
|
|
|
\return B_OK if the target could be launched, otherwise an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::Target(const char* name, const BMessage* data,
|
|
|
|
const char* baseName)
|
|
|
|
\brief Launches the specified target (or a clone of it), and attaches
|
|
|
|
the specified data to it.
|
|
|
|
|
|
|
|
\see status_t BLaunchRoster::Target(const char* name, const BMessage& data,
|
|
|
|
const char* baseName)
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::StartSession(const char* login)
|
|
|
|
\brief Starts a new launch session for the specified login.
|
|
|
|
|
|
|
|
This causes the launch_daemon to start itself under the specified
|
|
|
|
user, and to evaluate and process the user's launch configuration.
|
|
|
|
|
|
|
|
\param login The name of the user.
|
|
|
|
\return B_OK if the session could be created, otherwise an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//! @}
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\name Events
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//! @{
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::RegisterEvent(const BMessenger& source,
|
|
|
|
const char* name)
|
|
|
|
\brief Registers an event with the launch_daemon.
|
|
|
|
|
|
|
|
Registering an event allows other applications to be triggered by this
|
|
|
|
event. If you register an event named "event", applications can listen
|
|
|
|
to it like this:
|
|
|
|
\code
|
|
|
|
on {
|
|
|
|
event
|
|
|
|
}
|
|
|
|
\endcode
|
|
|
|
Or
|
|
|
|
\code
|
|
|
|
on {
|
|
|
|
last-part-of-signature/event
|
|
|
|
}
|
|
|
|
\endcode
|
|
|
|
|
|
|
|
The latter form can be used to solve ambiguous event definitions.
|
|
|
|
|
2015-10-17 15:07:53 +03:00
|
|
|
By specifying the \c B_STICKY_EVENT flag, you can mark the event as being
|
|
|
|
a permanent change. Once triggered, such an event will stay triggered, ie.
|
|
|
|
even new targets or jobs will consider it triggered.
|
|
|
|
|
2015-07-17 22:54:23 +03:00
|
|
|
\param source The messenger the event is coming from.
|
|
|
|
\param name The name of the event.
|
2015-10-17 15:07:53 +03:00
|
|
|
\param flags Flags for the event as described.
|
2015-07-17 22:54:23 +03:00
|
|
|
\return B_OK if the event could be registered, otherwise an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::UnregisterEvent(const BMessenger& source,
|
|
|
|
const char* name)
|
|
|
|
\brief Unregisters an event previously registered with the launch_daemon.
|
|
|
|
|
|
|
|
\param source The messenger the event is coming from.
|
|
|
|
\param name The name of the event.
|
|
|
|
\return B_OK if the event could be unregistered, otherwise an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::NotifyEvent(const BMessenger& source,
|
|
|
|
const char* name)
|
|
|
|
\brief Notifies the launch_daemon that an event has been triggered.
|
|
|
|
|
|
|
|
This causes the launch_daemon to notify all jobs, or targets listening
|
|
|
|
to this event, eventually leading them to be started.
|
|
|
|
|
|
|
|
You must have previously registered the event, in order to make the
|
|
|
|
launch_daemon do anything on a notification. Unknown event notifications
|
|
|
|
will be ignored.
|
|
|
|
|
|
|
|
\param source The messenger the event is coming from.
|
|
|
|
\param name The name of the event.
|
|
|
|
\return B_OK if the event could be notified, otherwise an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2015-10-21 22:17:41 +03:00
|
|
|
/*!
|
|
|
|
\fn status_t BLaunchRoster::ResetStickyEvent(const BMessenger& source,
|
|
|
|
const char* name);
|
|
|
|
\brief Resets a previously triggered sticky event.
|
|
|
|
|
|
|
|
When an event triggered that is marked as \c B_STICKY_EVENT, its status
|
|
|
|
will be reset when you call this method for it.
|
|
|
|
|
|
|
|
You must have previously registered the event, in order to make the
|
|
|
|
launch_daemon do anything. Unknown event notifications will be ignored.
|
|
|
|
|
|
|
|
\param source The messenger the event is coming from.
|
|
|
|
\param name The name of the event.
|
|
|
|
\return B_OK if the event could be reset, otherwise an error code.
|
|
|
|
|
|
|
|
\since Haiku R1
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2015-07-17 22:54:23 +03:00
|
|
|
//! @}
|