Files
interactive/rcts/rc_mngd/src/ConvertVolumeInfo.cpp
T
2026-08-07 17:38:18 +09:00

137 lines
3.2 KiB
C++

/***************************************************************************
Convert Volume Information Class ( ConvertVolumeInfo.cpp )
-----------------------------------------
begin : 2013/03/15
copyright : (C) 2013 Solbox Inc.
author : Development 1 Team
- 2013/03/15 - 1st dadamin
email : dev1@solbox.com
version : 3.2.0
CopyRight(C) 2005 Solbox Inc. All Rights reserved.
Redistribution and use in source and binary forms, with or with out
modification, are not permitted in outside of Solbox Inc.
***************************************************************************/
#include "rc_mngd.h"
#include "Convert.h"
#include "ConvertVolumeInfo.h"
#include "Logger.h"
#include "UtilFn.h"
CConvertVolumeInfo::CConvertVolumeInfo()
{
}
CConvertVolumeInfo::~CConvertVolumeInfo()
{
}
int CConvertVolumeInfo::ToJobData(int nServiceType, void* pFrom, void *pTo)
{
int r = 0;
CJobDataMap *pMap = reinterpret_cast<CJobDataMap *>(pTo);
switch(nServiceType)
{
case CServiceInfo::SDK:
{
vector<string> body;
StringSplitEx((char *)pFrom,SDK_DELIMITER, body);
if (body.size() != 3 )
{
r = JOB_ERR_CONVERT;
LOG(LERR, "Data conversion failed.");
break;
}
vector<string> ids;
StringSplit(body[0].c_str(), ID_DELIMITER, ids);
if (ids.size() != 2 )
{
r = JOB_ERR_CONVERT;
LOG(LERR, "Data conversion failed.");
break;
}
LOG(LDBG, "VolumeInfo Body : %s@%s, %s, %s"
,ids[0].c_str(), ids[1].c_str(), body[1].c_str(), body[2].c_str() );
//SDKReqBodySpInfo *pBody = (SDKReqBodySpInfo*)pFrom;
pMap->insert(CJobDataPair(KEY_JOB_TYPE, JOB_VOLUME_INFO));
pMap->insert(CJobDataPair(KEY_SP_SVC_ID, ids[0]));
pMap->insert(CJobDataPair(KEY_SP_USER_ID, ids[1]));
pMap->insert(CJobDataPair(KEY_REQ_USER_PASS_CRYPTED, body[1]));
pMap->insert(CJobDataPair(KEY_REQ_REG_DATE, body[2]));
r = pMap->size();
}
break;
case CServiceInfo::XML:
case CServiceInfo::ETC:
default:
r = JOB_ERR_CONVERT;
LOG(LERR, "Service does not support the conversion.");
break;
}
return r;
}
void* CConvertVolumeInfo::ToClientData(int nServiceType, int nCode, void* pFrom, int & outlen)
{
void* r = NULL;
CJobDataMap *pMap = reinterpret_cast<CJobDataMap *>(pFrom);
switch(nServiceType)
{
case CServiceInfo::SDK:
{
string maxstorage = GetJobMapValue(pFrom, KEY_MAX_STR_SIZE);
string used = GetJobMapValue(pFrom, KEY_DIR_USED);
if(maxstorage.empty() && used.empty() )
{
outlen = 0;
LOG(LWAR, "There is no data to be returned.[%s/%s]",
used.c_str(),maxstorage.c_str());
break;
}
char d = SDK_DELIMITER;
ostringstream outdata;
outdata << maxstorage << d << used;
BYTE *t = NULL;
outlen= outdata.str().size();
t = new BYTE[outlen + 1];
if(t)
{
memcpy(t, outdata.str().c_str(), outlen);
t[outlen] = '\0';
r = (void*) t;
LOG(LDBG, "CConvertVolumeInfo ToClientData(SDK) : %s, %d", (char *)r, outlen);
}
else
{
outlen = -1;
LOG(LERR, "Memory allocation error.[%d]", errno);
}
}
break;
case CServiceInfo::XML:
case CServiceInfo::ETC:
default:
outlen = -1;
LOG(LERR, "Service does not support the conversion.");
break;
}
return r;
}