Make client use binder interface on brillo
TEST=Verified status and update commands
Bug: 25908638
Change-Id: I7994de41001b4e116bffa539f23f1344ab1deae9
diff --git a/client_library/client_binder.h b/client_library/client_binder.h
index 22d1cf0..744b238 100644
--- a/client_library/client_binder.h
+++ b/client_library/client_binder.h
@@ -20,11 +20,17 @@
#include <cstdint>
#include <memory>
#include <string>
+#include <vector>
#include <base/macros.h>
#include <utils/StrongPointer.h>
+#include <utils/String16.h>
+
+#include <brillo/binder_watcher.h>
#include "android/brillo/IUpdateEngine.h"
+#include "android/brillo/BnUpdateEngineStatusCallback.h"
+
#include "update_engine/client_library/include/update_engine/client.h"
@@ -71,10 +77,29 @@
bool GetChannel(std::string* out_channel) const override;
- void RegisterStatusUpdateHandler(StatusUpdateHandler* handler) override;
+ bool RegisterStatusUpdateHandler(StatusUpdateHandler* handler) override;
private:
+ class StatusUpdateCallback :
+ public android::brillo::BnUpdateEngineStatusCallback {
+ public:
+ StatusUpdateCallback(BinderUpdateEngineClient* client) : client_(client) {}
+
+ android::binder::Status HandleStatusUpdate(
+ int64_t last_checked_time,
+ double progress,
+ const android::String16& current_operation,
+ const android::String16& new_version,
+ int64_t new_size) override;
+
+ private:
+ BinderUpdateEngineClient* client_;
+ };
+
android::sp<android::brillo::IUpdateEngine> service_;
+ android::sp<android::brillo::IUpdateEngineStatusCallback> status_callback_;
+ std::vector<update_engine::StatusUpdateHandler*> handlers_;
+ brillo::BinderWatcher binder_watcher_;
DISALLOW_COPY_AND_ASSIGN(BinderUpdateEngineClient);
}; // class BinderUpdateEngineClient