From: Inkyun Kil Date: Wed, 5 Sep 2018 05:22:53 +0000 (+0900) Subject: Add codes for sending updated package info X-Git-Tag: submit/tizen/20190208.015210~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=013fb1644eff5481df66156612653fa6cbdb83db;p=platform%2Fcore%2Fappfw%2Fcapmgr.git Add codes for sending updated package info Change-Id: Ie9e558bc23834d15d7a84e14bdcc767c0601f784 Signed-off-by: Inkyun Kil --- diff --git a/src/common/mdg_manager.cc b/src/common/mdg_manager.cc index 2488d4d..a6c4116 100755 --- a/src/common/mdg_manager.cc +++ b/src/common/mdg_manager.cc @@ -242,7 +242,13 @@ void MDGManager::ReceiveDataCb(int result, char* device_id, char* channel_id, mdgmgr->pm_->RemoveRemotePackage(std::string(device_id), pkgid); } else if (cmd == Command::UPDATE_PACKAGEINFO) { - // TODO(inkyun.kil) + std::string packages_str = std::string(p, p + datasize); + + RemotePackageInfo package(packages_str); + LOG(INFO) << "Package[" << package.pkgid() + << "] is updated at device " << device_id; + + mdgmgr->pm_->UpdateRemotePackage(std::string(device_id), package); } // FIXME(jeremy.jang): temporary code. need to send proper reply packet. @@ -442,12 +448,9 @@ void MDGManager::HandlePackageEvent(const std::string& pkgid, LOG(DEBUG) << "Event received: " << pkgid << " " << static_cast(event_type); - unsigned char* package_data; + unsigned char* package_data = nullptr; std::string packed; - if (event_type == PackageEventListener::EventType::UNINSTALL) { - package_data = new unsigned char[pkgid.size()]; - memcpy(package_data, pkgid.c_str(), pkgid.size()); - } else { + if (event_type == PackageEventListener::EventType::INSTALL) { RemotePackageInfo* info = this->pm_->GetInfo(pkgid); if (info == nullptr) { LOG(ERROR) << "Failed to get packageinfo :" << pkgid; @@ -460,6 +463,20 @@ void MDGManager::HandlePackageEvent(const std::string& pkgid, package_data = new unsigned char[packed.size()]; memcpy(package_data, packed.c_str(), packed.size()); delete info; + } else if (event_type == PackageEventListener::EventType::UNINSTALL) { + package_data = new unsigned char[pkgid.size()]; + memcpy(package_data, pkgid.c_str(), pkgid.size()); + } else if (event_type == PackageEventListener::EventType::UPDATE) { + RemotePackageInfo* info = this->pm_->GetInfo(pkgid); + if (info == nullptr) { + LOG(ERROR) << "Failed to get packageinfo :" << pkgid; + return; + } + + packed = info->Serialize(); + package_data = new unsigned char[packed.size()]; + memcpy(package_data, packed.c_str(), packed.size()); + delete info; } std::vector dev_list = DBManager::SelectDevices(); @@ -486,7 +503,6 @@ void MDGManager::HandlePackageEvent(const std::string& pkgid, delete package_data; } - bool MDGManager::AddDevice(const mdg_device_h device) { // critical section: appending device list std::mutex lock; diff --git a/src/common/package_manager.cc b/src/common/package_manager.cc index fb40b72..ac4ac7a 100644 --- a/src/common/package_manager.cc +++ b/src/common/package_manager.cc @@ -125,6 +125,21 @@ void PackageManager::StoreRemotePackages(const std::string& device_id, } } +void PackageManager::UpdateRemotePackage(const std::string& device_id, + const RemotePackageInfo& package) { + LOG(INFO) << "Update package[" << package.pkgid() << "] into DB"; + + if (!DBManager::DeleteRemotePackage(device_id, package.pkgid())) { + LOG(ERROR) << "Failed to delete package[" << package.pkgid() + << "] into DB"; + return; + } + + if (!DBManager::InsertRemotePackage(device_id, package)) + LOG(ERROR) << "Failed to insert package[" << package.pkgid() + << "] into DB"; +} + void PackageManager::RemoveRemotePackage(const std::string& device_id, const std::string& pkgid) { if (!DBManager::DeleteRemotePackage(device_id, pkgid)) diff --git a/src/common/package_manager.h b/src/common/package_manager.h index fd8b01b..2b6c669 100644 --- a/src/common/package_manager.h +++ b/src/common/package_manager.h @@ -26,6 +26,8 @@ class PackageManager { std::vector LoadLocalPackages(); void StoreRemotePackages(const std::string& device_id, const std::vector& packages); + void UpdateRemotePackage(const std::string& device_id, + const RemotePackageInfo& package); void RemoveRemotePackage(const std::string& device_id, const std::string& pkgid); RemotePackageInfo* GetInfo(const std::string &pkgid);