|
@@ -119,83 +119,21 @@ bool procsm::checkfailmark()
|
|
|
|
|
|
procsm::procsm(const char * strsmname,const unsigned int nBufSize,const unsigned int nMaxPacCount,const int nMode)
|
|
procsm::procsm(const char * strsmname,const unsigned int nBufSize,const unsigned int nMaxPacCount,const int nMode)
|
|
{
|
|
{
|
|
-// mnBufSize = nBufSize;
|
|
|
|
-
|
|
|
|
-// qDebug("create dbus");
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
strncpy(mstrsmname,strsmname,256);
|
|
strncpy(mstrsmname,strsmname,256);
|
|
-
|
|
|
|
mpASMPtr = new QSharedMemory(strsmname);
|
|
mpASMPtr = new QSharedMemory(strsmname);
|
|
-
|
|
|
|
mpthreadattmon = new std::thread(&procsm::threadAttachMon,this);
|
|
mpthreadattmon = new std::thread(&procsm::threadAttachMon,this);
|
|
|
|
|
|
|
|
+ char strasmname[300];
|
|
|
|
|
|
- char strasmname[256];
|
|
|
|
-
|
|
|
|
- bool bSMExit = false;
|
|
|
|
|
|
|
|
if(nMode == ModeWrite)
|
|
if(nMode == ModeWrite)
|
|
{
|
|
{
|
|
- bool bres;
|
|
|
|
-// if(checkfailmark())
|
|
|
|
-// {
|
|
|
|
-// bres = false;
|
|
|
|
-// }
|
|
|
|
-// else
|
|
|
|
-// {
|
|
|
|
-// bres = mpASMPtr->attach();
|
|
|
|
-// }
|
|
|
|
-// if(bres == false)
|
|
|
|
-// {
|
|
|
|
-// mpASMPtr->create(sizeof(ASM_PTR));
|
|
|
|
-
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
- bres = mpASMPtr->create(sizeof(ASM_PTR));
|
|
|
|
- if(bres == true)
|
|
|
|
|
|
+ int nrtn = CreateASMPTR(strasmname,nBufSize,nMaxPacCount);
|
|
|
|
+ if(nrtn<0)
|
|
{
|
|
{
|
|
- std::cout<<"\033[1m\033[32m"<<mstrsmname<<" create successfully."<<"\033[0m"<<std::endl;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- bres = mpASMPtr->attach();
|
|
|
|
- if(bres == true)
|
|
|
|
- {
|
|
|
|
- bSMExit = true;
|
|
|
|
- std::cout<<"\033[1m\033[32m"<<mstrsmname<<" exist. attach successfully."<<"\033[0m"<<std::endl;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- ASM_PTR * pasm = (ASM_PTR *)mpASMPtr->data();
|
|
|
|
- if(pasm == NULL)
|
|
|
|
- {
|
|
|
|
- qDebug("ASM_PTR is NULL.");
|
|
|
|
|
|
+ std::cout<<"CreateASMPTR Fail."<<std::endl;
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if(bSMExit == false)
|
|
|
|
- {
|
|
|
|
- qint64 uptime = std::chrono::system_clock::now().time_since_epoch().count();
|
|
|
|
- snprintf(strasmname,256,"%s_%lld",strsmname,uptime);
|
|
|
|
- mpASMPtr->lock();
|
|
|
|
- pasm->mnshmsize = sizeof(procsm_info)+nMaxPacCount*sizeof(procsm_head) + nBufSize;
|
|
|
|
- pasm->mnUpdateTime = uptime;
|
|
|
|
- strncpy(pasm->mstrshmname,strasmname,256);
|
|
|
|
- mpASMPtr->unlock();
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- mpASMPtr->lock();
|
|
|
|
- pasm->mnUpdateTime = std::chrono::system_clock::now().time_since_epoch().count();
|
|
|
|
- strncpy(strasmname,pasm->mstrshmname,256);
|
|
|
|
- mpASMPtr->unlock();
|
|
|
|
- }
|
|
|
|
- mASM_State = *pasm;
|
|
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
@@ -391,6 +329,58 @@ procsm::~procsm()
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+int procsm::CreateASMPTR(char * strasmname,const unsigned int nBufSize,const unsigned int nMaxPacCount)
|
|
|
|
+{
|
|
|
|
+ bool bSMExit = false;
|
|
|
|
+ bool bres;
|
|
|
|
+
|
|
|
|
+ bres = mpASMPtr->create(sizeof(ASM_PTR));
|
|
|
|
+ if(bres == true)
|
|
|
|
+ {
|
|
|
|
+ std::cout<<"\033[1m\033[32m"<<mstrsmname<<" create successfully."<<"\033[0m"<<std::endl;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ bres = mpASMPtr->attach();
|
|
|
|
+ if(bres == true)
|
|
|
|
+ {
|
|
|
|
+ bSMExit = true;
|
|
|
|
+ std::cout<<"\033[1m\033[32m"<<mstrsmname<<" exist. attach successfully."<<"\033[0m"<<std::endl;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ std::cout<<"Attach Fail."<<std::endl;
|
|
|
|
+ return -1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ASM_PTR * pasm = (ASM_PTR *)mpASMPtr->data();
|
|
|
|
+ if(pasm == NULL)
|
|
|
|
+ {
|
|
|
|
+ std::cout<<"ASM_PTR is NULL."<<std::endl;
|
|
|
|
+ return -1;
|
|
|
|
+ }
|
|
|
|
+ if(bSMExit == false)
|
|
|
|
+ {
|
|
|
|
+ qint64 uptime = std::chrono::system_clock::now().time_since_epoch().count();
|
|
|
|
+ snprintf(strasmname,300,"%s_%lld",mstrsmname,uptime);
|
|
|
|
+ mpASMPtr->lock();
|
|
|
|
+ pasm->mnshmsize = sizeof(procsm_info)+nMaxPacCount*sizeof(procsm_head) + nBufSize;
|
|
|
|
+ pasm->mnUpdateTime = uptime;
|
|
|
|
+ strncpy(pasm->mstrshmname,strasmname,256);
|
|
|
|
+ mpASMPtr->unlock();
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ mpASMPtr->lock();
|
|
|
|
+ pasm->mnUpdateTime = std::chrono::system_clock::now().time_since_epoch().count();
|
|
|
|
+ strncpy(strasmname,pasm->mstrshmname,256);
|
|
|
|
+ mpASMPtr->unlock();
|
|
|
|
+ }
|
|
|
|
+ mASM_State = *pasm;
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
void procsm::recreateasm(int nbufsize)
|
|
void procsm::recreateasm(int nbufsize)
|
|
{
|
|
{
|
|
|
|
|
|
@@ -400,9 +390,9 @@ void procsm::recreateasm(int nbufsize)
|
|
|
|
|
|
mnBufSize = std::max(nbufsize*11/10,nbufsize+1000);
|
|
mnBufSize = std::max(nbufsize*11/10,nbufsize+1000);
|
|
// mnBufSize = nbufsize+100;
|
|
// mnBufSize = nbufsize+100;
|
|
- char strasmname[256];
|
|
|
|
|
|
+ char strasmname[300];
|
|
ASM_PTR * pasm = (ASM_PTR *)mpASMPtr->data();
|
|
ASM_PTR * pasm = (ASM_PTR *)mpASMPtr->data();
|
|
- snprintf(strasmname,256,"%s_%lld",mstrsmname,std::chrono::system_clock::now().time_since_epoch().count());//QDateTime::currentMSecsSinceEpoch());
|
|
|
|
|
|
+ snprintf(strasmname,300,"%s_%lld",mstrsmname,(long long)std::chrono::system_clock::now().time_since_epoch().count());//QDateTime::currentMSecsSinceEpoch());
|
|
pasm->mnshmsize = sizeof(procsm_info)+mnMaxPacCount*sizeof(procsm_head) + mnBufSize;
|
|
pasm->mnshmsize = sizeof(procsm_info)+mnMaxPacCount*sizeof(procsm_head) + mnBufSize;
|
|
pasm->mnUpdateTime = std::chrono::system_clock::now().time_since_epoch().count();
|
|
pasm->mnUpdateTime = std::chrono::system_clock::now().time_since_epoch().count();
|
|
strncpy(pasm->mstrshmname,strasmname,256);
|
|
strncpy(pasm->mstrshmname,strasmname,256);
|