Registrar Protocols =================== Standard Replies ---------------- standard success reply message .............................. reply: B_REG_SUCCESS - [ ] fields: - : Request-specific fields. standard error reply message ............................ reply: B_REG_ERROR - "error": B_INT32_TYPE - [ "error_description": B_STRING_TYPE ] - [ ] fields: - "error": The error code (a status_t). - "error_description": Optional human readable description. - : Request-specific fields. standard general result reply message ..................................... reply: B_REG_RESULT - "result": B_INT32_TYPE - [ "result_description": B_STRING_TYPE ] - [ ] fields: - "result": The result value (a status_t). - "result_description": Optional human readable description. - : Request-specific fields. General Requests ---------------- Getting the messengers ...................... for MIME, clipboard and disk device management respectively +--------------+-------------------------------------------------------+ | target | registrar app looper (preferred handler) | +--------------+-------------------------------------------------------+ | message | - B_REG_GET_MIME_MESSENGER | | | - B_REG_GET_CLIPBOARD_MESSENGER | | | - B_REG_GET_DISK_DEVICE_MESSENGER | +--------------+-------------------------------------------------------+ | reply | standard success | | | | | | - "messenger": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error (fatal) | +--------------+-------------------------------------------------------+ reply fields: - "messenger": The requested messenger. Shut down ......... +--------------+-------------------------------------------------------+ | target | registrar app looper (preferred handler) | +--------------+-------------------------------------------------------+ | message | B_REG_SHUT_DOWN | | | | | | - "reboot": B_BOOL_TYPE | | | - "confirm": B_BOOL_TYPE | | | - "synchronously": B_BOOL_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error (fatal) | +--------------+-------------------------------------------------------+ message fields: - "reboot": If true, the system reboots instead of turning the power off. - "confirm": If true, the user will be asked to confirm to shut down the system. - "synchronously": If true, the request sender gets a reply only, if the shutdown process fails. Otherwise the reply will be sent right before asking the user for confirmation (if desired). Roster Requests --------------- App registration (BRoster::AddApplication()) ............................................ +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_ADD_APP | | | | | | - "signature": B_MIME_STRING_TYPE | | | - "ref": B_REF_TYPE | | | - "flags": B_UINT32_TYPE | | | - "team": B_INT32_TYPE | | | - "thread": B_INT32_TYPE | | | - "port": B_INT32_TYPE | | | - "full_registration": B_BOOL_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | | | | | | - [ "token": B_INT32_TYPE ] | | | - [ "other_team": B_INT32_TYPE ] | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "signature": The application signature. - "ref": An entry_ref to the application executable. - "flags": The application flags. - "team": The application team (team_id). - "port": The app looper port (port_id). - "full_registration": Whether full or pre-registration is requested. reply fields: - "token": If pre-registration was requested (uint32). Unique token to be passed to BRoster::SetThreadAndTeam(). - "other_team": For single/exclusive launch applications that are launched the second time. The team ID of the already running instance (team_id). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_ENTRY_NOT_FOUND: The entry_ref doesn't refer to a file. - B_ALREADY_RUNNING: For single/exclusive launch applications that are launched the second time. - B_REG_ALREADY_REGISTERED: The team is already registered. - ... app registration (BRoster::CompleteRegistration()) .................................................. +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_COMPLETE_REGISTRATION | | | | | | - "team": B_INT32_TYPE | | | - "thread": B_INT32_TYPE | | | - "port": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "team": The application team (team_id). - "thread": The application looper thread (thread_id). - "port": The app looper port (port_id). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_REG_APP_NOT_PRE_REGISTERED: The team is unknown to the roster or the application is already fully registered. - ... app registration check (BRoster::IsAppRegistered()) ................................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_IS_APP_REGISTERED | | | | | | - "ref": B_REF_TYPE | | | - ( "team": B_INT32_TYPE | "token": B_INT32_TYPE ) | +--------------+-------------------------------------------------------+ | reply | standard success | | | | | | - "registered": B_BOOL_TYPE | | | - "pre-registered": B_BOOL_TYPE | | | - [ "app_info": flattened app_info ] | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "ref": An entry_ref to the application executable. - "team": The application team (team_id). - "token": The application's preregistration token. reply fields: - "registered": true, if the app is (pre-)registered, false otherwise. - "pre-registered": true, if the app is pre-registered, false otherwise. - "app_info": Flattened app info, if the app is known (i.e. (pre-)registered). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_ENTRY_NOT_FOUND: The entry_ref doesn't refer to a file. - ... pre-registrated app unregistration (BRoster::RemovePreRegApp()) ............................................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_REMOVE_PRE_REGISTERED_APP | | | | | | - "token": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "token": The token BRoster::AddApplication() returned (uint32). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_REG_APP_NOT_PRE_REGISTERED: The token does not identify a pre-registered application. - ... app unregistration (BRoster::RemoveApp()) ......................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_REMOVE_APP | | | | | | - "team": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "team": The application team (team_id). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_REG_APP_NOT_REGISTERED: The team is unknown to the roster. - ... app pre-registration, set thread/team (BRoster::SetThreadAndTeam()) ................................................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_SET_THREAD_AND_TEAM | | | | | | - "token": B_INT32_TYPE | | | - "team": B_INT32_TYPE | | | - "thread": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "token": The token BRoster::AddApplication() returned (uint32). - "team": The application team (team_id). - "thread": The application looper thread (thread_id). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_REG_APP_NOT_PRE_REGISTERED: The token does not identify a pre-registered application. - ... app registration, change app signature (BRoster::SetSignature()) ................................................................ +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_SET_SIGNATURE | | | | | | - "team": B_INT32_TYPE | | | - "signature": B_STRING_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "team": The application team (team_id). - "signature": The application's new signature. error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_REG_APP_NOT_REGISTERED: The team does not identify a registered application. - ... get an app info (BRoster::Get{Running,Active,}AppInfo()) ........................................................ +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_GET_APP_INFO | | | | | | [ "team": B_INT32_TYPE | | | | "ref": B_REF_TYPE | | | | "signature": B_STRING_TYPE ] | +--------------+-------------------------------------------------------+ | reply | standard success | | | | | | - "app_info": B_REG_APP_INFO_TYPE | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "team": The application team (team_id). - "ref": An entry_ref to the application executable. - "signature": The application signature. - If both are omitted the active application is referred to. reply fields: - "app_info": The requested app_info (flat_app_info). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_BAD_TEAM_ID: The supplied team ID does not identify a registered application. - B_ERROR: - An entry_ref or a signature has been supplied and no such application is currently running. - No team ID has been supplied and currently there is no active application. - ... get an app list (BRoster::GetAppList()) ....................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_GET_APP_LIST | | | | | | - [ "signature": B_STRING_TYPE ] | +--------------+-------------------------------------------------------+ | reply | standard success | | | | | | - "teams": B_INT32_TYPE[] | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "signature": The application signature. reply fields: - "teams": The requested list of team IDs (team_id). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... activate an app (BRoster::ActivateApp()) ........................................ +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_ACTIVATE_APP | | | | | | "team": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "team": The application team (team_id). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_BAD_TEAM_ID: The supplied team ID does not identify a registered application. - ... broadcast a message (BRoster::Broadcast()) .......................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_BROADCAST | | | | | | - "team": B_INT32_TYPE | | | - "message": B_MESSAGE_TYPE | | | - "reply_target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "team": The requesting team (team_id). - "message": The message to be broadcast. - "reply_target": The reply target for the message. error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... start roster watching (BRoster::StartWatching()) ................................................ +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_START_WATCHING | | | | | | - "target": B_MESSENGER_TYPE | | | - "events": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "target": The target the event messages shall be sent to. - "events": Specifies the events the caller is interested in (uint32). error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... stop roster watching (BRoster::StopWatching()) .............................................. +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_STOP_WATCHING | | | | | | - "target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "target": The target that shall not longer receive any event messages. error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... MIME Database Requests ---------------------- install a mime type (BMimeType::Install()) .......................................... +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_INSTALL | | | | | | - "type": B_STRING_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "type": The mime type reply fields: - "result": - B_OK: success - B_FILE_EXISTS: the type is already installed - ... remove a mime type (BMimeType::Delete()) ........................................ +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_DELETE | | | | | | - "type": B_STRING_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "type": The mime type reply fields: - "result": - B_OK: success - B_ENTRY_NOT_FOUND: the type was not found - (other error code): failure set a specific attribute of a mime type (BMimeType::Set*()), installing if necessary .................................................................................... +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_SET_PARAM | | | | | | - "type": B_STRING_TYPE | | | - "which": B_INT32_TYPE | | | - [ additional fields depending upon the "which" | | | field (see below) ] | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "type": The mime type - "which": Which attribute to set. May be one of the following: +---------------------------+-------------------------------+-----------------------------------+ | "which" | additional message fields | field comments | +===========================+===============================+===================================+ | B_REG_MIME_ICON | "icon data": B_RAW_TYPE, | B_CMAP8 bitmap data only | | +-------------------------------+-----------------------------------+ | | "icon size": B_INT32_TYPE | B_{MINI,LARGE}_ICON or -1 for flat| | | | vector icon data | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_PREFERRED_APP | "signature": B_STRING_TYPE | | | +-------------------------------+-----------------------------------+ | | "app verb": B_INT32_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_ATTR_INFO | "attr info": B_MESSAGE_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_FILE_EXTENSIONS| "extensions": B_MESSAGE_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_DESCRIPTION | "long": B_BOOL_TYPE, | | | +-------------------------------+-----------------------------------+ | | "description": B_STRING_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_SNIFFER_RULE | "sniffer rule": B_STRING_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_APP_HINT | "app hint": B_REF_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_ICON_FOR_TYPE | "file type": B_STRING_TYPE, | | | +-------------------------------+-----------------------------------+ | | "icon data": B_RAW_TYPE, | | | +-------------------------------+-----------------------------------+ | | "icon size": B_INT32_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_SUPPORTED_TYPES| "types": B_MESSAGE_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ reply fields: - "result": - B_OK: success - (error code): failure delete a specific attribute of a mime type (BMimeType::Delete*()), .................................................................. +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_DELETE_PARAM | | | | | | - "type": B_STRING_TYPE | | | - "which": B_INT32_TYPE | | | - [ additional fields depending upon the "which" | | | field (see below) ] | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "type": The mime type - "which": Which attribute to delete. May be one of the following: +---------------------------+-------------------------------+-----------------------------------+ | "which" | additional message fields | field comments | +===========================+===============================+===================================+ | B_REG_MIME_ICON: | "icon size": B_INT32_TYPE | B_{MINI,LARGE}_ICON or -1 for | | | | vector icon data | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_PREFERRED_APP | "app verb": B_INT32_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_ATTR_INFO | | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_FILE_EXTENSIONS| | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_DESCRIPTION | "long": B_BOOL_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_SNIFFER_RULE | | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_APP_HINT | | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_ICON_FOR_TYPE | "file type": B_STRING_TYPE, | | | +-------------------------------+-----------------------------------+ | | "icon size": B_INT32_TYPE | | +---------------------------+-------------------------------+-----------------------------------+ | B_REG_MIME_SUPPORTED_TYPES| | | +---------------------------+-------------------------------+-----------------------------------+ reply fields: - "result": - B_OK: success - B_ENTRY_NOT_FOUND: no such attribute exists, or the type is not installed - (other error code): failure subscribe a BMessenger to the MIME monitor service (BMimeType::StartWatching()) ............................................................................... +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_START_WATCHING | | | | | | "target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "target": The BMessenger subscribing to the monitor service reply fields: - "result": - B_OK: success - (error code): failure unsubscribe a BMessenger from the MIME monitor service (BMimeType::StopWatching()) .................................................................................. +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_STOP_WATCHING | | | | | | "target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "target": The BMessenger unsubscribing from the monitor service reply fields: - "result": - B_OK: success - B_ENTRY_NOT_FOUND: the given BMessenger was not subscribed to the service - (other error code): failure perform an update_mime_info() call .................................. +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_UPDATE_MIME_INFO | | | | | | - "entry": B_REF_TYPE | | | - "recursive": B_BOOLEAN_TYPE | | | - "synchronous": B_BOOLEAN_TYPE | | | - "force": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "entry": The base entry to update. - "recursive": If true and "entry" is a directory, update all entries below "entry" in the hierarchy. - "synchronous": If true, the call will block until the operation is completed. If false, the call will return immediately and the operation will run asynchronously in another thread. - "force": Specifies how to handle entries for which a BEOS:TYPE attribute already exists. Valid values are B_UPDATE_MIME_INFO_{NO_FORCE, FORCE_KEEP_TYPE, FORCE_UPDATE_ALL}. reply fields: - "result": - B_OK: The asynchronous update_mime_info() call has been successfully started (and may still be running). - (error code): failure perform a create_app_meta_mime() call ..................................... +--------------+-------------------------------------------------------+ | target | mime manager (BRoster::fMimeMess) | +--------------+-------------------------------------------------------+ | message | B_REG_MIME_CREATE_APP_META_MIME | | | | | | - "entry": B_REF_TYPE | | | - "recursive": B_BOOLEAN_TYPE | | | - "synchronous": B_BOOLEAN_TYPE | | | - "force": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "entry": The base entry to update. - "recursive": If true and "entry" is a directory, update all entries below "entry" in the hierarchy. - "synchronous": If true, the call will block until the operation is completed. If false, the call will return immediately and the operation will run asynchronously in another thread. - "force": If != 0, also update entries for which meta app information already exists. reply fields: - "result": - B_OK: The asynchronous update_mime_info() call has been successfully started (and may still be running). - (error code): failure notify the thread manager to perform a clean up run ................................................... +--------------+-----------------------------------------------------------------------------+ | target | thread manager/mime manager (MIMEManager::fThreadManager/BRoster::fMimeMess)| +--------------+-----------------------------------------------------------------------------+ | message | B_REG_MIME_UPDATE_THREAD_FINISHED | +--------------+-----------------------------------------------------------------------------+ | reply | none (message should be sent asynchronously) | +--------------+-----------------------------------------------------------------------------+ Message Runner Requests ----------------------- message runner registration (BMessageRunner::InitData()) ........................................................ +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_REGISTER_MESSAGE_RUNNER | | | | | | - "team": B_INT32_TYPE | | | - "target": B_MESSENGER_TYPE | | | - "message": B_MESSAGE_TYPE | | | - "interval": B_INT64_TYPE | | | - "count": B_INT32_TYPE | | | - "reply_target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | | | | | | - "token": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | on error: | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "team": ID of the team owning the BMessageRunner (team_id). - "target": The message target. - "message": The message to be sent to the target. - "interval": Period of time before the first message is sent and between messages (if more than one shall be sent) in microseconds. - "count": Specifies how many times the message shall be sent. A value less than 0 for an unlimited number of repetitions. - "reply_target": Target replies to the delivered message(s) shall be sent to. reply fields: - "token": Unique token identifying the message runner. error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... message runner unregistration (BMessageRunner::~BMessageRunner()) ................................................................. +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message: | B_REG_UNREGISTER_MESSAGE_RUNNER | | | | | | - "token": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error: | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "token": Unique token identifying the message runner. Returned by the B_REG_REGISTER_MESSAGE_RUNNER request. error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... set message runner parameters (BMessageRunner::SetParams()) ........................................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message | B_REG_SET_MESSAGE_RUNNER_PARAMS | | | | | | - "token": B_INT32_TYPE | | | - [ "interval": B_INT64_TYPE ] | | | - [ "count": B_INT32_TYPE ] | +--------------+-------------------------------------------------------+ | reply | standard success | +--------------+-------------------------------------------------------+ | on error: | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "token": Unique token identifying the message runner. Returned by the B_REG_REGISTER_MESSAGE_RUNNER request. - "interval": Period of time before the first message is sent and between messages (if more than one shall be sent) in microseconds. - "count": Specifies how many times the message shall be sent. A value less than 0 for an unlimited number of repetitions. error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... get message runner info (BMessageRunner::InitData()) .................................................... +--------------+-------------------------------------------------------+ | target | roster | +--------------+-------------------------------------------------------+ | message: | B_REG_GET_MESSAGE_RUNNER_INFO | | | | | | - "token": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard success | | | | | | - "interval": B_INT64_TYPE | | | - "count": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | on error: | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "token": Unique token identifying the message runner. Returned by the B_REG_REGISTER_MESSAGE_RUNNER request. reply fields: - "interval": Period of time before the first message is sent and between messages (if more than one shall be sent) in microseconds. - "count": Specifies how many times the message still has to be sent. A value less than 0 for an unlimited number of repetitions. error reply fields: - "error": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... Clipboard Handler Requests -------------------------- add new clipboard to system (BClipboard::BClipboard()) ...................................................... +--------------+-------------------------------------------------------+ | target | clipboard handler | +--------------+-------------------------------------------------------+ | message | B_REG_ADD_CLIPBOARD | | | | | | - "name": B_STRING_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "name": Name used to identify the particular clipboard to add reply fields: - "result": - B_OK: success - B_BAD_VALUE: name field was not specified in message get clipboard write count (BClipboard::GetSystemCount()) ........................................................ +--------------+-------------------------------------------------------+ | target | clipboard handler | +--------------+-------------------------------------------------------+ | message | B_REG_GET_CLIPBOARD_COUNT | | | | | | - "name": B_STRING_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | | | | | | - "count": B_INT32_TYPE | +--------------+-------------------------------------------------------+ message fields: - "name": Name used to identify the particular clipboard reply fields: - "result": - B_OK: success - B_BAD_VALUE: no name / no valid name specified in message - "count": - number of times this clipboard has been written to start watching clipboard (BClipboard::StartWatching()) ...................................................... +--------------+-------------------------------------------------------+ | target | clipboard handler | +--------------+-------------------------------------------------------+ | message | B_REG_CLIPBOARD_START_WATCHING | | | | | | - "name": B_STRING_TYPE | | | - "target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "name": Name used to identify the particular clipboard - "target": Messenger pointing to the target to notify reply fields: - "result": - B_OK: success - B_BAD_VALUE: no name / no valid name specified in message no target specified stop watching clipboard (BClipboard::StopWatching()) .................................................... +--------------+-------------------------------------------------------+ | target | clipboard handler | +--------------+-------------------------------------------------------+ | message | B_REG_CLIPBOARD_STOP_WATCHING | | | | | | - "name": B_STRING_TYPE | | | - "target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ message fields: - "name": Name used to identify the particular clipboard - "target": Messenger pointing to the target to remove from the notify list reply fields: - "result": - B_OK: success - B_BAD_VALUE: no name / no valid name specified in message / no target specified download clipboard data (BClipboard::DownloadFromSystem()) .......................................................... +--------------+-------------------------------------------------------+ | target | clipboard handler | +--------------+-------------------------------------------------------+ | message | B_REG_DOWNLOAD_CLIPBOARD | | | | | | "name": B_STRING_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | | | | | | - "data": B_MESSAGE_TYPE | | | - "data source": B_MESSENGER_TYPE | | | - "count": B_INT32_TYPE | +--------------+-------------------------------------------------------+ message fields: - "name": Name used to identify the particular clipboard reply fields: - "result": - B_OK: success - B_BAD_VALUE: no name / no valid name specified in message no target specified - "data": message with Data fields containing the contents of the clipboard - "data source": messenger to the be_app_messenger of the application which last wrote data - "count": number of times this clipboard has been written to upload clipboard data (BClipboard::UploadToSystem()) .................................................... +--------------+-------------------------------------------------------+ | target | clipboard handler | +--------------+-------------------------------------------------------+ | message | B_REG_UPLOAD_CLIPBOARD | | | | | | "name": B_STRING_TYPE | | | "data": B_MESSAGE_TYPE | | | "data source": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | | | | | | - "count": B_INT32_TYPE | +--------------+-------------------------------------------------------+ message fields: - "name": Name used to identify the particular clipboard - "data": message with Data fields containing the contents of the clipboard - "data source": messenger to the be_app_messenger of the application which last wrote data reply fields: - "result": - B_OK: success - B_BAD_VALUE: no name / no valid name specified in message / no target specified - "count": - number of times this clipboard has been written to Disk Device Requests -------------------- get next disk device .................... +--------------+-------------------------------------------------------+ | target | disk device manager | +--------------+-------------------------------------------------------+ | message | B_REG_NEXT_DISK_DEVICE | | | | | | - "cookie": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | | | | | | - "device": B_MESSAGE_TYPE | | | - "cookie": B_INT32_TYPE | +--------------+-------------------------------------------------------+ message fields: - "cookie": An iteration cookie. Initially 0. reply fields: - "device": Archived BDiskDevice info. - "cookie": Next value for the iteration cookie. - "result": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_ENTRY_NOT_FOUND: Iteration finished. - ... get disk device ............... +--------------+-------------------------------------------------------+ | target | disk device manager | +--------------+-------------------------------------------------------+ | message | B_REG_GET_DISK_DEVICE | | | | | | - "device_id": B_INT32_TYPE | | | - | "session_id": B_INT32_TYPE | | | - | "partition_id": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | | | | | | - "device": B_MESSAGE_TYPE | +--------------+-------------------------------------------------------+ message fields: - "device_id": ID of the device to be retrieved. - "session_id": ID of session whose device shall be retrieved. - "partition_id": ID of partition whose device shall be retrieved. reply fields: - "device": Archived BDiskDevice info. - "result": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_ENTRY_NOT_FOUND: A device/session/partition with that ID could not be found. - ... update disk device .................. +--------------+-------------------------------------------------------+ | target | disk device manager | +--------------+-------------------------------------------------------+ | message | B_REG_UPDATE_DISK_DEVICE | | | | | | - "device_id": B_INT32_TYPE | | | - | "session_id": B_INT32_TYPE | | | - | "partition_id": B_INT32_TYPE | | | - "change_counter": B_INT32_TYPE | | | - "update_policy": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | | | | | | - "up_to_date": B_BOOLEAN_TYPE | | | - [ "device": B_MESSAGE_TYPE ] | +--------------+-------------------------------------------------------+ message fields: - "device_id": ID of the device to be retrieved. - "session_id": ID of session whose device shall be retrieved. - "partition_id": ID of partition whose device shall be retrieved. - "change_counter": Change counter of the object (or device in case of B_REG_DEVICE_UPDATE_DEVICE_CHANGED update policy) in question. - "update_policy": (uint32) - B_REG_DEVICE_UPDATE_CHECK: Check only, if the object is up to date. - B_REG_DEVICE_UPDATE_CHANGED: Update only, if the object has changed. - B_REG_DEVICE_UPDATE_DEVICE_CHANGED: Update, if the device has changed, even if the partition/session has not. The latter two have the same semantics, if the object is a device. reply fields: - "up_to_date": true, if the object (and for B_REG_DEVICE_UPDATE_DEVICE_CHANGED also the device) is already up to date, false otherwise. - "device": Archived BDiskDevice info. - "result": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - B_ENTRY_NOT_FOUND: A device/session/partition with that ID could not be found. - ... start disk device watching .......................... +--------------+-------------------------------------------------------+ | target | disk device manager | +--------------+-------------------------------------------------------+ | message | B_REG_DEVICE_START_WATCHING | | | | | | - "target": B_MESSENGER_TYPE | | | - "events": B_INT32_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "target": The target the event messages shall be sent to. - "events": Specifies the events the caller is interested in (uint32). - "result": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ... stop disk device watching ......................... +--------------+-------------------------------------------------------+ | target | disk device manager | +--------------+-------------------------------------------------------+ | message | B_REG_DEVICE_STOP_WATCHING | | | | | | - "target": B_MESSENGER_TYPE | +--------------+-------------------------------------------------------+ | reply | standard general result | +--------------+-------------------------------------------------------+ | on error | - B_NO_REPLY (fatal) | | | - standard error | +--------------+-------------------------------------------------------+ message fields: - "target": The target that shall not longer receive any event messages. - "result": - B_BAD_VALUE: A request message field is missing or contains an invalid value. - ...