xref: /haiku/headers/private/package/DaemonClient.h (revision 04a0e9c7b68cbe3a43d38e2bca8e860fd80936fb)
1 /*
2  * Copyright 2013, Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Ingo Weinhold <ingo_weinhold@gmx.de>
7  */
8 #ifndef _PACKAGE__PRIVATE__DAEMON_CLIENT_H_
9 #define _PACKAGE__PRIVATE__DAEMON_CLIENT_H_
10 
11 
12 #include <Messenger.h>
13 #include <package/PackageDefs.h>
14 #include <String.h>
15 
16 #include <package/DaemonDefs.h>
17 
18 
19 class BDirectory;
20 
21 
22 namespace BPackageKit {
23 
24 
25 class BInstallationLocationInfo;
26 class BPackageInfoSet;
27 
28 
29 namespace BPrivate {
30 
31 
32 class BActivationTransaction;
33 
34 
35 class BDaemonClient {
36 public:
37 			class BCommitTransactionResult;
38 
39 public:
40 								BDaemonClient();
41 								~BDaemonClient();
42 
43 			status_t			GetInstallationLocationInfo(
44 									BPackageInstallationLocation location,
45 									BInstallationLocationInfo& _info);
46 			status_t			CommitTransaction(
47 									const BActivationTransaction& transaction,
48 									BCommitTransactionResult& _result);
49 									// B_OK only means _result is initialized,
50 									// not the success of committing the
51 									// transaction
52 
53 			status_t			CreateTransaction(
54 									BPackageInstallationLocation location,
55 									BActivationTransaction& _transaction,
56 									BDirectory& _transactionDirectory);
57 
58 private:
59 			status_t			_InitMessenger();
60 			status_t			_ExtractPackageInfoSet(const BMessage& message,
61 									const char* field, BPackageInfoSet& _infos);
62 
63 private:
64 			BMessenger			fDaemonMessenger;
65 };
66 
67 
68 class BDaemonClient::BCommitTransactionResult {
69 public:
70 								BCommitTransactionResult();
71 								BCommitTransactionResult(int32 error,
72 									const BString& errorMessage,
73 									const BString& errorPackage,
74 									const BString& oldStateDirectory);
75 								~BCommitTransactionResult();
76 
77 			void				SetTo(int32 error, const BString& errorMessage,
78 									const BString& errorPackage,
79 									const BString& oldStateDirectory);
80 
81 			status_t			Error() const;
82 			BDaemonError		DaemonError() const;
83 									// may be B_DAEMON_OK, even if Error() is
84 									// != B_OK, then Error() is as specific as
85 									// is known
86 			const BString&		ErrorMessage() const;
87 									// may be empty, even on error
88 			const BString&		ErrorPackage() const;
89 									// may be empty, even on error
90 
91 			BString				FullErrorMessage() const;
92 
93 			const BString&		OldStateDirectory() const;
94 
95 private:
96 			int32				fError;
97 			BString				fErrorMessage;
98 			BString				fErrorPackage;
99 			BString				fOldStateDirectory;
100 };
101 
102 
103 }	// namespace BPrivate
104 }	// namespace BPackageKit
105 
106 
107 #endif	// _PACKAGE__PRIVATE__DAEMON_CLIENT_H_
108