base
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
/***************************************************************************
|
||||
Work Class (Work.cpp)
|
||||
-----------------------------------------
|
||||
|
||||
begin : 2013/07/04
|
||||
copyright : (C) 2013 Solbox Inc.
|
||||
author : Development 1 Team
|
||||
- 2013/07/04 - 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 "cc_statd.h"
|
||||
#include "Work.h"
|
||||
#include "Configs.h"
|
||||
#include "Logger.h"
|
||||
|
||||
#define SOCKET_TIMEOUT 5
|
||||
|
||||
// class CWorkFile
|
||||
CWorkFile::CWorkFile()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CWorkFile::CWorkFile(string & path)
|
||||
: m_path(path)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CWorkFile::~CWorkFile()
|
||||
{
|
||||
DeleteWorkFile();
|
||||
}
|
||||
|
||||
void CWorkFile::DeleteWorkFile()
|
||||
{
|
||||
::unlink(m_path.c_str());
|
||||
}
|
||||
|
||||
bool CWorkFile::ReadWorkFile(string & data)
|
||||
{
|
||||
ifstream ifs;
|
||||
|
||||
ifs.open(m_path.c_str());
|
||||
if (ifs.is_open())
|
||||
{
|
||||
|
||||
string t;
|
||||
while(!ifs.eof())
|
||||
{
|
||||
getline(ifs, t);
|
||||
data.append(t);
|
||||
t.clear();
|
||||
}
|
||||
|
||||
ifs.close();
|
||||
|
||||
ostringstream msg;
|
||||
msg << "Read File : Data";
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
msg << "################ Data Start ################";
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
msg << "################ Text ################" << endl;
|
||||
msg << data;
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
msg << "################ Binary ################";
|
||||
LOGACONSOLE(LDEV, msg);
|
||||
_LOG_HEX_(LDEV, data.c_str(), data.size());
|
||||
msg << "################ Data End ################";
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
// show message:
|
||||
LOG(LERR,"Error opening file %s", m_path.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// class CWorkSocket
|
||||
CWorkSocket::CWorkSocket()
|
||||
: CBaseSocket( SOCKET_NOT_VALID )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CWorkSocket::CWorkSocket(const int & sfd)
|
||||
: CBaseSocket( sfd )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CWorkSocket::~CWorkSocket()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
int CWorkSocket::SetOption()
|
||||
{
|
||||
if( m_sock == SOCKET_NOT_VALID )
|
||||
return -1;
|
||||
|
||||
int result = 0;
|
||||
/* Time wait ¹æÁö */
|
||||
struct linger ling;
|
||||
|
||||
ling.l_onoff = 1;
|
||||
ling.l_linger = 10; /* 0 for abortive disconnect */
|
||||
|
||||
result = setsockopt(m_sock, SOL_SOCKET, SO_LINGER, &ling, sizeof(ling));
|
||||
if( result != 0 )
|
||||
{
|
||||
int errorNum = errno;
|
||||
LOG( LERR, "SO_LINGER set error.[%d][%s]", errorNum, strerror(errorNum));
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct timeval tv_timeo = { SOCKET_TIMEOUT, 0 };
|
||||
/* Recv Timeout ¼³Á¤. */
|
||||
result = setsockopt( m_sock, SOL_SOCKET, SO_RCVTIMEO, &tv_timeo, sizeof(tv_timeo));
|
||||
if( result != 0 )
|
||||
{
|
||||
int errorNum = errno;
|
||||
LOG( LERR, "SO_RCVTIMEO set error.[%d][%s]", errorNum, strerror(errorNum));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Send Timeout ¼³Á¤. */
|
||||
result = setsockopt( m_sock, SOL_SOCKET, SO_SNDTIMEO, &tv_timeo, sizeof(tv_timeo));
|
||||
if( result != 0 )
|
||||
{
|
||||
int errorNum = errno;
|
||||
LOG( LERR, "SO_SNDTIMEO set error.[%d][%s]", errorNum, strerror(errorNum));
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ssize_t CWorkSocket::ReadHead(int & bodysize)
|
||||
{
|
||||
ssize_t r = 0;
|
||||
|
||||
r = ReadNTimeout(&bodysize, sizeof(bodysize));
|
||||
if(r > 0)
|
||||
bodysize = ntohl(bodysize);
|
||||
|
||||
ostringstream msg;
|
||||
msg << "Read Socket : Header Data [" << bodysize << "]";
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
return r;
|
||||
}
|
||||
|
||||
ssize_t CWorkSocket::ReadBody(string & data)
|
||||
{
|
||||
ssize_t r = 0;
|
||||
r = ReadNTimeout( const_cast<char*>(data.c_str()), data.size());
|
||||
|
||||
ostringstream msg;
|
||||
msg << "Read Socket : Body Data";
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
msg << "################ Data Start ################";
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
msg << "################ Text ################" << endl;
|
||||
msg << data;
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
msg << "################ Binary ################";
|
||||
LOGACONSOLE(LDEV, msg);
|
||||
_LOG_HEX_(LDEV, data.c_str(), data.size());
|
||||
msg << "################ Data End ################";
|
||||
LOGACONSOLE(LDBG, msg);
|
||||
|
||||
return r;
|
||||
}
|
||||
Reference in New Issue
Block a user