// found in the LICENSE file.
#include "command_request_handler.hh"
+
+#include <string>
+
+#include "db_handle_provider.hh"
#include "parcelable_factory.hh"
#include "pkginfo_parcelable.hh"
-#include "db_handle_provider.hh"
#include "pkgmgrinfo_debug.h"
-#include <string>
-
-using namespace pkgmgr_common::parcel;
-using namespace pkgmgr_common::database;
+namespace pcp = pkgmgr_common::parcel;
+namespace pcd = pkgmgr_common::database;
namespace pkgmgr_server {
namespace request_handler {
bool CommandRequestHandler::HandleRequest(unsigned char* data, int size,
std::string locale) {
- auto abstract_parcel = ParcelableFactory::GetInst().CreateParcel(data, size);
+ auto abstract_parcel =
+ pcp::ParcelableFactory::GetInst().CreateParcel(data, size);
if (abstract_parcel == nullptr ||
- abstract_parcel->GetType() != ParcelableType::Command) {
+ abstract_parcel->GetType() != pcp::ParcelableType::Command) {
_LOGE("Invalid parcel or type");
- // TODO: return something
+ result_ = std::make_shared<pcp::ResultParcelable>(
+ PMINFO_R_ERROR, std::vector<std::vector<std::string>>{});
return false;
}
- auto* parcel = dynamic_cast<CommandParcelable*>(abstract_parcel.get());
+ auto* parcel = dynamic_cast<pcp::CommandParcelable*>(abstract_parcel.get());
if (parcel == nullptr) {
_LOGE("Parcel is empty");
- // TODO: return something
+ result_ = std::make_shared<pcp::ResultParcelable>(
+ PMINFO_R_ERROR, std::vector<std::vector<std::string>>{});
return false;
}
if (parcel->GetCmd() == CommandType::RemoveCache) {
- pkgmgr_common::DBHandleProvider::GetInst(parcel->GetUid()).SetMemoryMode(false);
- result_.WriteInt32(0);
+ pkgmgr_common::DBHandleProvider::GetInst(
+ parcel->GetUid()).SetMemoryMode(GetPID(), false);
+ result_ = std::make_shared<pcp::ResultParcelable>(
+ PMINFO_R_OK, std::vector<std::vector<std::string>>{});
+ return true;
}
return true;
}
-std::vector<uint8_t> CommandRequestHandler::GetResult() {
- return result_.GetRaw();
+std::vector<uint8_t> CommandRequestHandler::ExtractResult() {
+ tizen_base::Parcel parcel;
+
+ parcel.WriteParcelable(*result_.get());
+ std::vector<uint8_t> raw = parcel.GetRaw();
+ result_.reset();
+
+ return raw;
}
} // namespace request_handler