int CCommProxy::SendJobsToRemote(vector<CJob*> &vJobs)
{
    CJob *pJob = NULL;
    char *dataBuf = NULL;
    int  bufSize = 0;
    vector<string> vSerializedJobs;
    for(vector<CJob*>::iterator iter = vJobs.begin(); iter != vJobs.end(); ++iter)
    {
        pJob = *iter;
        pJob->Serialize(&dataBuf,bufSize);
        if(m_pConfig->compress)
        {
            vector<uint8_t> compress_out;
            compress_buffer(dataBuf,bufSize,compress_out);
            delete dataBuf; //delete original bufffer
            dataBuf = (char *)&compress_out[0]; //address of the vec buffer
            bufSize = compress_out.size(); //compressed size
            string strData(dataBuf,bufSize);
            vSerializedJobs.push_back(strData);
        }
        else
        {
            string strData(dataBuf,bufSize);
            vSerializedJobs.push_back(strData);
            delete dataBuf;
        }
        delete pJob;
    }
    pClient->SendJobsToRemote(vSerializedJobs.size(),vSerializedJobs);
    return SUCCESS;
}
int CCommProxy::SendCompletedJobsToRemote(std::vector<CJob*> &vJobs)
{
    CJob *pJob = NULL;
    char *dataBuf = NULL;
    int  bufSize = 0;
    vector<string> vSerializedJobs;
    for(vector<CJob*>::iterator iter = vJobs.begin(); iter != vJobs.end(); ++iter)
    {
        pJob = *iter;
        pJob->Serialize(&dataBuf,bufSize);
        string strData(dataBuf,bufSize);
        vSerializedJobs.push_back(strData);
        delete dataBuf;
    }
    pClient->SendCompletedJobsToRemote(vSerializedJobs.size(),vSerializedJobs);
    return SUCCESS;
}