diff --git a/pvDataApp/factory/PVField.cpp b/pvDataApp/factory/PVField.cpp index 614ceec..3b35602 100644 --- a/pvDataApp/factory/PVField.cpp +++ b/pvDataApp/factory/PVField.cpp @@ -47,7 +47,7 @@ void PVField::message(String fieldName,String message,MessageType messageType) requester->message(mess,messageType); } else { printf("%s %s %s\n", - messageTypeName[messageType].c_str(), + getMessageTypeName(messageType).c_str(), fieldName.c_str(), message.c_str()); } @@ -148,7 +148,6 @@ void PVField::renameField(String newName) } std::tr1::shared_ptr parentStructure = const_pointer_cast( parent->getStructure()); - StringArray const &fieldNames = parentStructure->getFieldNames(); FieldConstPtrArray const &fields = parentStructure->getFields(); for(size_t i=0; i +#include +#include #include namespace epics { namespace pvData { const size_t messageTypeCount = 4; +static StringArray messageTypeName(messageTypeCount); -StringArray messageTypeName(messageTypeCount); -void Requester::init() +String getMessageTypeName(MessageType messageType) { - messageTypeName[0] = "info"; - messageTypeName[1] = "warning"; - messageTypeName[2] = "error"; - messageTypeName[3] = "fatalError"; + static Mutex mutex; + Lock xx(mutex); + if(messageTypeName[0].size()==0) { + messageTypeName[0] = "info"; + messageTypeName[1] = "warning"; + messageTypeName[2] = "error"; + messageTypeName[3] = "fatalError"; + } + return messageTypeName[messageType]; } + + }} diff --git a/pvDataApp/misc/requester.h b/pvDataApp/misc/requester.h index a7259f6..75ff385 100644 --- a/pvDataApp/misc/requester.h +++ b/pvDataApp/misc/requester.h @@ -18,17 +18,14 @@ enum MessageType { infoMessage,warningMessage,errorMessage,fatalErrorMessage }; -extern StringArray messageTypeName; +extern String getMessageTypeName(MessageType messageType); extern const size_t messageTypeCount; class Requester { public: POINTER_DEFINITIONS(Requester); - virtual ~Requester(){} virtual String getRequesterName() = 0; virtual void message(String message,MessageType messageType) = 0; -private: - static void init(); }; }} diff --git a/testApp/misc/testMessageQueue.cpp b/testApp/misc/testMessageQueue.cpp index afa9d28..52b1461 100644 --- a/testApp/misc/testMessageQueue.cpp +++ b/testApp/misc/testMessageQueue.cpp @@ -58,7 +58,7 @@ static void testBasic(FILE * fd,FILE *auxfd ) { assert(messageNode.get()!=0); fprintf(fd,"message %s messageType %s\n", messageNode->getMessage().c_str(), - messageTypeName[messageNode->getMessageType()].c_str()); + getMessageTypeName(messageNode->getMessageType()).c_str()); assert(messageNode->getMessage().compare(messages[0])==0); queue->release(); messageNode = queue->get(); @@ -69,7 +69,7 @@ static void testBasic(FILE * fd,FILE *auxfd ) { assert(messageNode.get()!=0); fprintf(fd,"message %s messageType %s\n", messageNode->getMessage().c_str(), - messageTypeName[messageNode->getMessageType()].c_str()); + getMessageTypeName(messageNode->getMessageType()).c_str()); assert(messageNode->getMessage().compare(messages[3])==0); queue->release(); result = queue->isEmpty();