Add Request type in PkgRequest
authorChanggyu Choi <changyu.choi@samsung.com>
Mon, 15 Feb 2021 01:05:44 +0000 (10:05 +0900)
committer최창규/Tizen Platform Lab(SR)/Engineer/삼성전자 <changyu.choi@samsung.com>
Mon, 15 Feb 2021 05:01:44 +0000 (14:01 +0900)
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
src/common/request_type.hh
src/server/pkg_request.cc
src/server/pkg_request.hh

index 7bc4db8..e8efd2f 100644 (file)
@@ -20,6 +20,7 @@
 namespace pkgmgr_common {
 
 enum ReqType {
+  REQ_TYPE_NONE = -1,
   GET_PKG_INFO = 0,
   GET_APP_INFO,
   GET_APPCTRL_PRIV,
index 80a69cf..729c855 100644 (file)
@@ -19,7 +19,8 @@
 
 namespace pkgmgr_server {
 
-PkgRequest::PkgRequest(int fd) : fd_(fd), data_size_(-1) {
+PkgRequest::PkgRequest(int fd) : fd_(fd),
+    request_type_(pkgmgr_common::REQ_TYPE_NONE), data_size_(-1) {
   socket_ = std::unique_ptr<pkgmgr_common::socket::DataSocket>(
       new (std::nothrow) pkgmgr_common::socket::DataSocket(fd_));
   if (socket_ == nullptr) LOGE("Out of memory");
@@ -33,21 +34,30 @@ unsigned char* PkgRequest::GetData() { return data_; }
 
 int PkgRequest::GetSize() { return data_size_; }
 
+pkgmgr_common::ReqType PkgRequest::GetRequestType() { return request_type_; }
+
 bool PkgRequest::ReceiveData() {
-  int ret = socket_->ReceiveData(&data_size_, sizeof(data_size_));
+  int ret = socket_->ReceiveData(&request_type_, sizeof(request_type_));
+  if (ret < 0 || request_type_ == pkgmgr_common::REQ_TYPE_NONE) {
+    LOGE("Failed to ReceiveData");
+    return false;
+  }
+  ret = socket_->ReceiveData(&data_size_, sizeof(data_size_));
   if (ret < 0) {
     LOGE("Failed to ReceiveData");
+    request_type_ = pkgmgr_common::REQ_TYPE_NONE;
     return false;
   }
   if (data_size_ < 0) {
     LOGE("Invalid data");
-    data_size_ = -1;
+    request_type_ = pkgmgr_common::REQ_TYPE_NONE;
     return false;
   }
+
   data_ = new (std::nothrow) unsigned char[data_size_];
   if (data_ == nullptr) {
     LOGE("Out of memory");
-    data_size_ = -1;
+    request_type_ = pkgmgr_common::REQ_TYPE_NONE;
     return false;
   }
   ret = socket_->ReceiveData((void*)data_, data_size_);
@@ -55,7 +65,7 @@ bool PkgRequest::ReceiveData() {
     LOGE("Failed to ReceiveData");
     delete[] data_;
     data_ = nullptr;
-    data_size_ = -1;
+    request_type_ = pkgmgr_common::REQ_TYPE_NONE;
     return false;
   }
 
index da7cef0..2afca11 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <memory>
 #include "data_socket.hh"
+#include "request_type.hh"
 
 namespace pkgmgr_server {
 
@@ -32,6 +33,7 @@ class EXPORT_API PkgRequest {
   ~PkgRequest();
   unsigned char* GetData();
   int GetSize();
+  pkgmgr_common::ReqType GetRequestType();
   bool ReceiveData();
   bool SendData(unsigned char* data, int size);
 
@@ -39,6 +41,7 @@ class EXPORT_API PkgRequest {
   int fd_;
   std::unique_ptr<pkgmgr_common::socket::DataSocket> socket_;
   unsigned char* data_ = nullptr;
+  pkgmgr_common::ReqType request_type_;
   int data_size_;
 };