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