|
@@ -189,24 +189,26 @@ void protointerface::Proc()
|
|
|
WriteCodeLine("#include <iostream>",&xFileout);
|
|
|
WriteCodeLine("#include <QString>",&xFileout);
|
|
|
WriteCodeLine("#include <QStringList>",&xFileout);
|
|
|
+ WriteCodeLine("#include <QMutex>",&xFileout);
|
|
|
WriteCodeLine("",&xFileout);
|
|
|
|
|
|
char strline[1000];
|
|
|
- WriteCodeLine("",&xFileout);
|
|
|
WriteCodeLine("namespace iv",&xFileout);
|
|
|
WriteCodeLine("{",&xFileout);
|
|
|
WriteCodeLine("\tstruct protomsgtype",&xFileout);
|
|
|
WriteCodeLine("\t{",&xFileout);
|
|
|
WriteCodeLine("\t\tstd::string mstrtypename;",&xFileout);
|
|
|
- WriteCodeLine("\t\t::google::protobuf::Message * mpmsg;",&xFileout);
|
|
|
+ WriteCodeLine("\t\tstd::shared_ptr<::google::protobuf::Message> mpmsg;",&xFileout);
|
|
|
WriteCodeLine("\t};",&xFileout);
|
|
|
WriteCodeLine("}",&xFileout);
|
|
|
WriteCodeLine("",&xFileout);
|
|
|
|
|
|
|
|
|
snprintf(strline,1000,"#define MSGCOUNT %u\n",(unsigned int)xvectorclassname.size());xFileout.write(strline);
|
|
|
- snprintf(strline,1000,"const int typecount = %u;\n",(unsigned int)xvectorclassname.size());xFileout.write(strline);
|
|
|
- snprintf(strline,1000,"iv::protomsgtype gmsgtype[MSGCOUNT];\n");xFileout.write(strline);
|
|
|
+ snprintf(strline,1000,"static const int typecount = %u;\n",(unsigned int)xvectorclassname.size());xFileout.write(strline);
|
|
|
+ snprintf(strline,1000,"static iv::protomsgtype gmsgtype[MSGCOUNT];\n");xFileout.write(strline);
|
|
|
+ WriteCodeLine("static bool gbUpdateMsgType = false;",&xFileout);
|
|
|
+ WriteCodeLine("static QMutex mMutexUpdateMstType;",&xFileout);
|
|
|
|
|
|
|
|
|
WriteCodeLine("",&xFileout);
|
|
@@ -257,16 +259,24 @@ void protointerface::Proc()
|
|
|
// snprintf(strline,1000,"{\n");xFileout.write(strline);
|
|
|
snprintf(strline,1000,"void InitMsgType()\n");xFileout.write(strline);
|
|
|
snprintf(strline,1000,"{\n");xFileout.write(strline);
|
|
|
+ WriteCodeLine("\tmMutexUpdateMstType.lock();",&xFileout);
|
|
|
+ WriteCodeLine("\tif(gbUpdateMsgType)",&xFileout);
|
|
|
+ WriteCodeLine("\t{",&xFileout);
|
|
|
+ WriteCodeLine("\t\tmMutexUpdateMstType.unlock();",&xFileout);
|
|
|
+ WriteCodeLine("\t\treturn;",&xFileout);
|
|
|
+ WriteCodeLine("\t}",&xFileout);
|
|
|
for(i=0;i<xvectorclassname.size();i++)
|
|
|
{
|
|
|
|
|
|
snprintf(strline,1000,"\tgmsgtype[%d].mstrtypename = \"%s\";\n",
|
|
|
i,xvectorclassname[i].data());
|
|
|
xFileout.write(strline);
|
|
|
- snprintf(strline,1000,"\tgmsgtype[%d].mpmsg = (::google::protobuf::Message *)(new %s);\n",
|
|
|
+ snprintf(strline,1000,"\tgmsgtype[%d].mpmsg = std::shared_ptr<::google::protobuf::Message>(new %s);\n",
|
|
|
i,xvectorclassname[i].data());
|
|
|
xFileout.write(strline);
|
|
|
}
|
|
|
+ WriteCodeLine("\tgbUpdateMsgType = true;",&xFileout);
|
|
|
+ WriteCodeLine("\tmMutexUpdateMstType.unlock();",&xFileout);
|
|
|
snprintf(strline,1000,"}\n");xFileout.write(strline);
|
|
|
|
|
|
snprintf(strline,1000,"\n");xFileout.write(strline);
|