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");
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_);
LOGE("Failed to ReceiveData");
delete[] data_;
data_ = nullptr;
- data_size_ = -1;
+ request_type_ = pkgmgr_common::REQ_TYPE_NONE;
return false;
}
#include <memory>
#include "data_socket.hh"
+#include "request_type.hh"
namespace pkgmgr_server {
~PkgRequest();
unsigned char* GetData();
int GetSize();
+ pkgmgr_common::ReqType GetRequestType();
bool ReceiveData();
bool SendData(unsigned char* data, int size);
int fd_;
std::unique_ptr<pkgmgr_common::socket::DataSocket> socket_;
unsigned char* data_ = nullptr;
+ pkgmgr_common::ReqType request_type_;
int data_size_;
};