BOOL CWizKMDatabaseServer::document_postData2(const WIZDOCUMENTDATAEX& data, UINT nParts, __int64& nServerVersion) { QString strObjMd5; // if (!data.arrayData.isEmpty() && (nParts & WIZKM_XMKRPC_DOCUMENT_PART_DATA)) { strObjMd5 = WizMd5StringNoSpaceJava(data.arrayData); if (!data_upload(data.strGUID, _T("document"), data.arrayData, strObjMd5, data.strTitle)) { TOLOG1(_T("Failed to upload note data: %1"), data.strTitle); return FALSE; } } // CWizKMDocumentPostDataParam param(WIZKM_WEBAPI_VERSION, m_kbInfo.strToken, m_kbInfo.strKbGUID, data.strGUID, nParts, data, data.arrayTagGUID, data.arrayParam, strObjMd5); // CWizXmlRpcResult ret; if (!Call(_T("document.postData"), ret, ¶m)) { TOLOG(_T("document.postData failure!")); return FALSE; } // if (CWizXmlRpcStructValue* pRet = ret.GetResultValue<CWizXmlRpcStructValue>()) { pRet->GetInt64(_T("version"), nServerVersion); } // return TRUE; }
BOOL CWizKMDatabaseServer::data_upload(const QString& strObjectGUID, const QString& strObjectType, const QByteArray& stream, const QString& strObjMD5, const QString& strDisplayName) { __int64 nStreamSize = stream.size(); if (0 == nStreamSize) { TOLOG(_T("fault error: stream is zero")); return FALSE; } // QString strMD5(strObjMD5); // QByteArray spPartStream; // int partSize = 500 * 1000; int partCount = int(nStreamSize / partSize); if (nStreamSize % partSize != 0) { partCount++; } // for (int i = 0; i < partCount; i++) { spPartStream.clear(); int start = i * partSize; int end = std::min<int>(start + partSize, int(nStreamSize)); ATLASSERT(end > start); // int curPartSize = end - start; ATLASSERT(curPartSize <= partSize); // const char* begin = stream.data() + start; spPartStream = spPartStream.fromRawData(begin, curPartSize); // int curPartStreamSize = (int)spPartStream.size(); ATLASSERT(curPartStreamSize == curPartSize); // if (!data_upload(strObjectGUID, strObjectType, strMD5, (int)nStreamSize, partCount, i, curPartSize, spPartStream)) { TOLOG1(_T("Failed to upload part data: %1"), strDisplayName); return FALSE; } } // // return TRUE; }
void MXBMESH::timer2function() { broadcast_interval_passed++; dataupload_interval_passed++; timeout_interval_passed++; if (broadcast_interval_passed / TIMER2TICKS>=NODEINFO.broadcastInterval / TIMER2TICKS && NODEINFO.broadcastInterval>0) { broadcast_neigbour(NULL); broadcast_interval_passed=0; } if (dataupload_interval_passed / TIMER2TICKS>= (NODEINFO.dataupload_interval / TIMER2TICKS) && NODEINFO.dataupload_interval>0 && NODEINFO.localAddress!=SINKADDRESS ) //upload data { data_upload(NULL); dataupload_interval_passed=0; } if (Timeout>0 && timeout_interval_passed / TIMER2TICKS>=Timeout / TIMER2TICKS ) { TimeoutFunction(); timeout_interval_passed=0; } }