haiku/headers/private/package/DaemonDefs.h
Ingo Weinhold 85d2badf00 package daemon: Add support for activation change request
* daemon: Handle new request B_MESSAGE_COMMIT_TRANSACTION. It activates
  and deactivates given sets of packages. The new packages must be
  placed in a directory in the administrative directory. The daemon
  moves them to the packages directory and the deactivated packages to
  a subdirectory it creates. It also save the old activation state
  there.
* Add private BActivationTransaction, describing an activation change
  transaction.
* BDaemonClient: Add CommitTransaction(), which sends a given
  BActivationTransaction as a B_MESSAGE_COMMIT_TRANSACTION request to
  the daemon.

Completely untested yet.
2013-04-20 01:28:18 +02:00

80 lines
2.4 KiB
C++

/*
* Copyright 2013, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Ingo Weinhold <ingo_weinhold@gmx.de>
*/
#ifndef _PACKAGE__PRIVATE__DAEMON_DEFS_H_
#define _PACKAGE__PRIVATE__DAEMON_DEFS_H_
namespace BPackageKit {
namespace BPrivate {
#define B_PACKAGE_DAEMON_APP_SIGNATURE "application/x-vnd.haiku-package_daemon"
enum BDaemonError {
B_DAEMON_OK = 0,
B_DAEMON_CHANGE_COUNT_MISMATCH,
B_DAEMON_BAD_REQUEST,
B_DAEMON_NO_SUCH_PACKAGE,
B_DAEMON_PACKAGE_ALREADY_EXISTS
};
// message codes for requests to and replies from the daemon
enum {
B_MESSAGE_GET_INSTALLATION_LOCATION_INFO = 'PKLI',
// "location": int32
// the respective installation location constant
B_MESSAGE_GET_INSTALLATION_LOCATION_INFO_REPLY = 'PKLR',
// "base directory device": int32
// "base directory node": int64
// "packages directory device": int32
// "packages directory node": int64
// "change count": int64
// "active packages": message[]
// archived BPackageInfos of the active packages
// "inactive packages": message[]
// archived BPackageInfos of the inactive packages
B_MESSAGE_COMMIT_TRANSACTION = 'PKTC',
// "location": int32
// the respective installation location constant
// "change count": int64
// the expected change count of the installation location; fail,
// if something has changed in the meantime
// "transaction": string
// name of the transaction directory (subdirectory of the
// administrative directory) where to-be-activated packages live
// "activate": string[]
// file names of the packages to activate; must be in the
// transaction directory
// "deactivate": string[]
// file names of the packages to activate; must be in the
// transaction directory
B_MESSAGE_COMMIT_TRANSACTION_REPLY = 'PKTR'
// "error": int32
// regular error code or BDaemonError describing how committing
// the transaction went
// "error message": string
// [error case only] gives some additional information what went
// wrong; optional
// "error package": string
// [error case only] file name of the package causing the error,
// if any in particarly; optional
// "old state": string
// name of the directory (subdirectory of the administrative
// directory) containing the deactivated packages
};
} // namespace BPrivate
} // namespace BPackageKit
#endif // _PACKAGE__PRIVATE__DAEMON_DEFS_H_