else if (poutput == nullptr) \
return CSR_ERROR_INVALID_PARAMETER
-#define STRING_GETTER(engine, cid, poutput) \
- do { \
- GETTER_PARAM_CHECK(engine, poutput); \
- auto h = reinterpret_cast<Csr::Client::Handle *>(engine); \
- auto ret = h->dispatch<std::pair<int, std::string>>( \
- Csr::CommandId::cid, h->getContext()); \
- if (ret.first != CSR_ERROR_NONE) { \
- ERROR("Error to get string about engine. ret: " << ret.first); \
- return ret.first; \
- } \
- auto output = strdup(ret.second.c_str()); \
- if (output == nullptr) \
- return CSR_ERROR_OUT_OF_MEMORY; \
- *poutput = output; \
- return CSR_ERROR_NONE; \
+#define STRING_GETTER(engine, cid, poutput) \
+ do { \
+ GETTER_PARAM_CHECK(engine, poutput); \
+ auto h = reinterpret_cast<Csr::Client::Handle *>(engine); \
+ auto ret = h->dispatch<std::pair<int, std::shared_ptr<std::string>>>( \
+ Csr::CommandId::cid, h->getContext()); \
+ if (ret.first == CSR_ERROR_NONE && ret.second) { \
+ auto output = strdup(ret.second->c_str()); \
+ if (output == nullptr) \
+ return CSR_ERROR_OUT_OF_MEMORY; \
+ *poutput = output; \
+ } \
+ return ret.first; \
} while (false)
namespace {
GETTER_PARAM_CHECK(engine, ptime);
auto h = reinterpret_cast<Csr::Client::Handle *>(engine);
- auto ret = h->dispatch<std::pair<int, int64_t>>(
+ auto ret = h->dispatch<std::pair<int, std::shared_ptr<int64_t>>>(
Csr::CommandId::EM_GET_UPDATED_TIME, h->getContext());
- if (ret.first != CSR_ERROR_NONE) {
- ERROR("Error to get updated time. ret: " << ret.first);
- return ret.first;
- }
+ if (ret.first == CSR_ERROR_NONE && ret.second)
+ *ptime = static_cast<time_t>(*ret.second);
- *ptime = static_cast<time_t>(ret.second);
- return CSR_ERROR_NONE;
+ return ret.first;
EXCEPTION_SAFE_END
}
GETTER_PARAM_CHECK(engine, pactivated);
auto h = reinterpret_cast<Csr::Client::Handle *>(engine);
- auto ret = h->dispatch<std::pair<int, int>>(
+ auto ret = h->dispatch<std::pair<int, std::shared_ptr<int>>>(
Csr::CommandId::EM_GET_ACTIVATED, h->getContext());
- if (ret.first != CSR_ERROR_NONE) {
- ERROR("Error to get activated. ret: " << ret.first);
- return ret.first;
- }
+ if (ret.first == CSR_ERROR_NONE && ret.second)
+ *pactivated = static_cast<csr_activated_e>(*ret.second);
- *pactivated = static_cast<csr_activated_e>(ret.second);
- return CSR_ERROR_NONE;
+ return ret.first;
EXCEPTION_SAFE_END
}
GETTER_PARAM_CHECK(engine, pstate);
auto h = reinterpret_cast<Csr::Client::Handle *>(engine);
- auto ret = h->dispatch<std::pair<int, int>>(
+ auto ret = h->dispatch<std::pair<int, std::shared_ptr<int>>>(
Csr::CommandId::EM_GET_STATE, h->getContext());
- if (ret.first != CSR_ERROR_NONE) {
- ERROR("Error to get state. ret: " << ret.first);
- return ret.first;
- }
+ if (ret.first == CSR_ERROR_NONE && ret.second)
+ *pstate = static_cast<csr_state_e>(*ret.second);
- *pstate = static_cast<csr_state_e>(ret.second);
- return CSR_ERROR_NONE;
+ return ret.first;
EXCEPTION_SAFE_END
}
h->getContext(),
std::string(url));
- if (ret.first != CSR_ERROR_NONE) {
- ERROR("Error! ret: " << ret.first);
- return ret.first;
- }
+ if (ret.second)
+ h->add(ResultPtr(ret.second));
- h->add(ResultPtr(ret.second));
*presult = reinterpret_cast<csr_wp_check_result_h>(ret.second);
- return CSR_ERROR_NONE;
+ return ret.first;
EXCEPTION_SAFE_END
}
stream.read(sizeof(*value), value);
}
}
+ static void Deserialize(IStream &stream, std::shared_ptr<uint32_t> &value)
+ {
+ if (stream.empty()) {
+ value.reset();
+ } else {
+ value.reset(new uint32_t);
+ stream.read(sizeof(*value), value.get());
+ }
+ }
// int32
static void Deserialize(IStream &stream, int32_t &value)
stream.read(sizeof(*value), value);
}
}
+ static void Deserialize(IStream &stream, std::shared_ptr<int32_t> &value)
+ {
+ if (stream.empty()) {
+ value.reset();
+ } else {
+ value.reset(new int32_t);
+ stream.read(sizeof(*value), value.get());
+ }
+ }
// unsigned int64
static void Deserialize(IStream &stream, uint64_t &value)
stream.read(sizeof(*value), value);
}
}
+ static void Deserialize(IStream &stream, std::shared_ptr<uint64_t> &value)
+ {
+ if (stream.empty()) {
+ value.reset();
+ } else {
+ value.reset(new uint64_t);
+ stream.read(sizeof(*value), value.get());
+ }
+ }
// int64
static void Deserialize(IStream &stream, int64_t &value)
stream.read(sizeof(*value), value);
}
}
+ static void Deserialize(IStream &stream, std::shared_ptr<int64_t> &value)
+ {
+ if (stream.empty()) {
+ value.reset();
+ } else {
+ value.reset(new int64_t);
+ stream.read(sizeof(*value), value.get());
+ }
+ }
// bool
static void Deserialize(IStream &stream, bool &value)
value = static_cast<csr_error_e>(val);
}
+ // std::string
template <typename T, typename R, typename A>
static void Deserialize(IStream &stream, std::basic_string<T, R, A> &str)
{
}
}
+ template <typename T, typename R, typename A>
+ static void Deserialize(IStream &stream, std::shared_ptr<std::basic_string<T, R, A>> &str)
+ {
+ if (stream.empty()) {
+ str.reset();
+ } else {
+ int length;
+ stream.read(sizeof(length), &length);
+ std::vector<T> buf(length);
+ stream.read(length * sizeof(T), buf.data());
+ str.reset(new std::basic_string<T, R, A>(buf.data(), buf.data() + length));
+ }
+ }
+
// STL templates
// std::list
EXCEPTION_GUARD_CLOSER(ret)
- return BinaryQueue::Serialize(ret, CsDetected()).pop();
+ return BinaryQueue::Serialize(ret).pop();
EXCEPTION_GUARD_END
}
EXCEPTION_GUARD_CLOSER(ret)
- return BinaryQueue::Serialize(ret, std::string()).pop();
+ return BinaryQueue::Serialize(ret).pop();
EXCEPTION_GUARD_END
}
EXCEPTION_GUARD_CLOSER(ret)
- return BinaryQueue::Serialize(ret, std::string()).pop();
+ return BinaryQueue::Serialize(ret).pop();
EXCEPTION_GUARD_END
}
EXCEPTION_GUARD_CLOSER(ret)
- return BinaryQueue::Serialize(ret, std::string()).pop();
+ return BinaryQueue::Serialize(ret).pop();
EXCEPTION_GUARD_END
}
EXCEPTION_GUARD_CLOSER(ret)
- return BinaryQueue::Serialize(ret, std::string()).pop();
+ return BinaryQueue::Serialize(ret).pop();
EXCEPTION_GUARD_END
}
switch (cid) {
case CommandId::SCAN_DATA: {
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, CsDetected()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
CsContextShPtr cptr;
RawBuffer data;
case CommandId::SCAN_FILE: {
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, CsDetected()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
CsContextShPtr cptr;
std::string filepath;
case CommandId::GET_SCANNABLE_FILES: {
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, StrSet()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
std::string dir;
q.Deserialize(dir);
case CommandId::GET_DETECTED: {
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, CsDetected()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
std::string filepath;
q.Deserialize(filepath);
case CommandId::GET_DETECTED_LIST: {
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, std::vector<CsDetected>()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
StrSet dirSet;
q.Deserialize(dirSet);
case CommandId::GET_IGNORED: {
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, CsDetected()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
std::string filepath;
q.Deserialize(filepath);
case CommandId::GET_IGNORED_LIST: {
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, std::vector<CsDetected>()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
StrSet dirSet;
q.Deserialize(dirSet);
RawBuffer ServerService::processWp(const ConnShPtr &conn, RawBuffer &data)
{
if (!hasPermission(conn))
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, WpResult()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
BinaryQueue q;
q.push(data);
switch (cid) {
case CommandId::EM_GET_NAME: {
if (!hasPerm)
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, std::string()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
EmContextShPtr cptr;
q.Deserialize(cptr);
case CommandId::EM_GET_VENDOR: {
if (!hasPerm)
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, std::string()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
EmContextShPtr cptr;
q.Deserialize(cptr);
case CommandId::EM_GET_VERSION: {
if (!hasPerm)
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, std::string()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
EmContextShPtr cptr;
q.Deserialize(cptr);
case CommandId::EM_GET_DATA_VERSION: {
if (!hasPerm)
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, std::string()).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
EmContextShPtr cptr;
q.Deserialize(cptr);
case CommandId::EM_GET_UPDATED_TIME: {
if (!hasPerm)
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, -1).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
EmContextShPtr cptr;
q.Deserialize(cptr);
case CommandId::EM_GET_ACTIVATED: {
if (!hasPerm)
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, -1).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
EmContextShPtr cptr;
q.Deserialize(cptr);
case CommandId::EM_GET_STATE: {
if (!hasPerm)
- return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED, -1).pop();
+ return BinaryQueue::Serialize(CSR_ERROR_PERMISSION_DENIED).pop();
EmContextShPtr cptr;
q.Deserialize(cptr);
EXCEPTION_GUARD_CLOSER(ret)
- return BinaryQueue::Serialize(ret, WpResult()).pop();
+ return BinaryQueue::Serialize(ret).pop();
EXCEPTION_GUARD_END
}