root/headers/private/package/DaemonClient.h
/*
 * 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_CLIENT_H_
#define _PACKAGE__PRIVATE__DAEMON_CLIENT_H_


#include <Messenger.h>
#include <package/PackageDefs.h>
#include <String.h>

#include <package/DaemonDefs.h>


class BDirectory;


namespace BPackageKit {


class BCommitTransactionResult;
class BInstallationLocationInfo;
class BPackageInfoSet;


namespace BPrivate {


class BActivationTransaction;


class BDaemonClient {
public:
                                                                BDaemonClient();
                                                                ~BDaemonClient();

                        status_t                        GetInstallationLocationInfo(
                                                                        BPackageInstallationLocation location,
                                                                        BInstallationLocationInfo& _info);
                        status_t                        CommitTransaction(
                                                                        const BActivationTransaction& transaction,
                                                                        BCommitTransactionResult& _result);
                                                                        // B_OK only means _result is initialized,
                                                                        // not the success of committing the
                                                                        // transaction

                        status_t                        CreateTransaction(
                                                                        BPackageInstallationLocation location,
                                                                        BActivationTransaction& _transaction,
                                                                        BDirectory& _transactionDirectory);

private:
                        status_t                        _InitMessenger();
                        status_t                        _ExtractPackageInfoSet(const BMessage& message,
                                                                        const char* field, BPackageInfoSet& _infos);

private:
                        BMessenger                      fDaemonMessenger;
};


}       // namespace BPrivate
}       // namespace BPackageKit


#endif  // _PACKAGE__PRIVATE__DAEMON_CLIENT_H_