Index: /trunk/FACT++/src/Connection.cc
===================================================================
--- /trunk/FACT++/src/Connection.cc	(revision 10372)
+++ /trunk/FACT++/src/Connection.cc	(revision 10373)
@@ -23,5 +23,5 @@
     // -------- Abbreviations for starting async tasks ---------
 
-int Connection::Write(const Time &t, const char *txt, int qos)
+int Connection::Write(const Time &t, const string &txt, int qos)
 {
     if (fLog)
Index: /trunk/FACT++/src/Connection.h
===================================================================
--- /trunk/FACT++/src/Connection.h	(revision 10372)
+++ /trunk/FACT++/src/Connection.h	(revision 10373)
@@ -61,5 +61,5 @@
     void HandleSentData(const boost::system::error_code& error, size_t);
 
-    int Write(const Time &t, const char *txt, int qos=kInfo);
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
 
     virtual void ConnectionEstablished() { }
Index: /trunk/FACT++/src/MessageDim.cc
===================================================================
--- /trunk/FACT++/src/MessageDim.cc	(revision 10372)
+++ /trunk/FACT++/src/MessageDim.cc	(revision 10373)
@@ -62,5 +62,5 @@
 //! transmitted messages.
 //
-int MessageDimTX::Write(const Time &t, const char *txt, int qos)
+int MessageDimTX::Write(const Time &t, const string &txt, int qos)
 {
     MessageImp::Write(t, txt, qos);
@@ -69,5 +69,5 @@
     // hold a local copy of the data.
     setQuality(qos);
-    setData(const_cast<char*>(txt));
+    setData(const_cast<char*>(txt.c_str()));
     const int rc = updateService();
 
@@ -112,5 +112,6 @@
 MessageDimRX::MessageDimRX(const std::string &name, MessageImp &imp)
 : fMsg(imp),
-fDimMessage(Form("%s/MESSAGE", name.c_str()).c_str(), const_cast<char*>(""), this)
+fDimMessage(Form("%s/MESSAGE", name.c_str()).c_str(), const_cast<char*>(""), this),
+fConnected(false)
 {
     fMinLogLevel = 0;
@@ -129,9 +130,12 @@
 
     // The server is diconnected. Do nothing
-    if (getInfo()->getTimestamp()==0)
+    if (getInfo()->getTimestamp()==0 || getInfo()->getSize()==1)
     {
+        fConnected=false;
         fMsg.Message("Disconnected.");
         return;
     }
+
+    fConnected=true;
 
     // skip all messages with a severity smaller than the minimum log level
Index: /trunk/FACT++/src/MessageDim.h
===================================================================
--- /trunk/FACT++/src/MessageDim.h	(revision 10372)
+++ /trunk/FACT++/src/MessageDim.h	(revision 10373)
@@ -17,5 +17,5 @@
     ~MessageDimTX();
 
-    int Write(const Time &t, const char *txt, int qos=kInfo);
+    int Write(const Time &t, const std::string &txt, int qos=kInfo);
 
     void SetDebug(bool b=true) { fDebug=b; }
@@ -34,5 +34,6 @@
     DimStampedInfo fDimMessage;
 
-    int fMinLogLevel;
+    int  fMinLogLevel;
+    bool fConnected;
 
 protected:
@@ -43,4 +44,5 @@
 
     void SetMinLogLevel(int min=0) { fMinLogLevel=min; }
+    bool IsConnected() const { return fConnected; }
 };
 
Index: /trunk/FACT++/src/MessageImp.cc
===================================================================
--- /trunk/FACT++/src/MessageImp.cc	(revision 10372)
+++ /trunk/FACT++/src/MessageImp.cc	(revision 10373)
@@ -69,5 +69,5 @@
 //!    The severity of the message
 //
-int MessageImp::Write(const Time &time, const char *txt, int severity)
+int MessageImp::Write(const Time &time, const string &txt, int severity)
 {
     switch (severity)
@@ -96,5 +96,5 @@
 //!    The severity of the message to be passed to Write
 //
-int MessageImp::Update(const char *txt, int severity)
+int MessageImp::Update(const string &txt, int severity)
 {
     Write(Time(), txt, severity);
Index: /trunk/FACT++/src/MessageImp.h
===================================================================
--- /trunk/FACT++/src/MessageImp.h	(revision 10372)
+++ /trunk/FACT++/src/MessageImp.h	(revision 10373)
@@ -28,24 +28,24 @@
     MessageImp(std::ostream &out=std::cout);
 
-    virtual int Write(const Time &time, const char *txt, int qos=kInfo);
+    virtual int Write(const Time &time, const std::string &txt, int qos=kInfo);
 
-    int Update(const char *txt, int qos=kInfo);
-    int Update(const std::string &str, int qos=kInfo) { return Update(str.c_str(), qos); }
+    int Update(const std::string &str, int qos=kInfo);
+    int Update(const char *txt, int qos=kInfo) { return Update(std::string(txt), qos); }
     int Update(const std::stringstream &str, int qos=kInfo) { return Update(str.str(), qos); }
     int Update(int qos, const char *fmt, ...);
 
-    int Debug(const char *txt)   { return Update(txt, kDebug); }
-    int Message(const char *txt) { return Update(txt, kMessage); }
-    int Info(const char *txt)    { return Update(txt, kInfo);    }
-    int Warn(const char *txt)    { return Update(txt, kWarn);    }
-    int Error(const char *txt)   { return Update(txt, kError);   }
-    int Fatal(const char *txt)   { return Update(txt, kFatal);   }
+    int Debug(const std::string &str)    { return Update(str, kDebug);   }
+    int Message(const std::string &str)  { return Update(str, kMessage); }
+    int Info(const std::string &str)     { return Update(str, kInfo);    }
+    int Warn(const std::string &str)     { return Update(str, kWarn);    }
+    int Error(const std::string &str)    { return Update(str, kError);   }
+    int Fatal(const std::string &str)    { return Update(str, kFatal);   }
 
-    int Debug(const std::string &str)   { return Debug(str.c_str()); }
-    int Message(const std::string &str) { return Message(str.c_str()); }
-    int Info(const std::string &str)    { return Info(str.c_str());    }
-    int Warn(const std::string &str)    { return Warn(str.c_str());    }
-    int Error(const std::string &str)   { return Error(str.c_str());   }
-    int Fatal(const std::string &str)   { return Fatal(str.c_str());   }
+    int Debug(const char *txt)   { return Debug(std::string(txt));   }
+    int Message(const char *txt) { return Message(std::string(txt)); }
+    int Info(const char *txt)    { return Info(std::string(txt));    }
+    int Warn(const char *txt)    { return Warn(std::string(txt));    }
+    int Error(const char *txt)   { return Error(std::string(txt));   }
+    int Fatal(const char *txt)   { return Fatal(std::string(txt));   }
 
     int Debug(const std::stringstream &str)   { return Debug(str.str()); }
Index: /trunk/FACT++/src/StateMachineDim.h
===================================================================
--- /trunk/FACT++/src/StateMachineDim.h	(revision 10372)
+++ /trunk/FACT++/src/StateMachineDim.h	(revision 10373)
@@ -40,5 +40,5 @@
 
     /// Redirect our own logging to fLog
-    int Write(const Time &time, const char *txt, int qos);
+    int Write(const Time &time, const std::string &txt, int qos);
 
     /// This is an internal function to do some action in case of
