Reverted direct flow parameters
[u/mrichter/AliRoot.git] / MONITOR / AliMonitorClient.cxx
index 6468ef4..81b3987 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "AliMonitorClient.h"
 #include "AliMonitorProcess.h"
+#include "AliLog.h"
 #include <TGMsgBox.h>
 #include <TGFileDialog.h>
 #include <TMessage.h>
@@ -459,14 +460,14 @@ AliMonitorClient::AliMonitorClient():
 AliMonitorClient::AliMonitorClient(const AliMonitorClient& client) :
   TGMainFrame(client)
 {
-  Fatal("AliMonitorClient", "copy constructor not implemented");
+  AliFatal("copy constructor not implemented");
 }
 
 //_____________________________________________________________________________
 AliMonitorClient& AliMonitorClient::operator = (const AliMonitorClient& 
                                                /*client*/)
 {
-  Fatal("operator =", "assignment operator not implemented");
+  AliFatal("assignment operator not implemented");
   return *this;
 }
 
@@ -512,6 +513,8 @@ AliMonitorClient::~AliMonitorClient()
   delete fHorizontalFrame;
 
   if (fSocket) {
+    fSocketHandler->Remove();
+    fSocket->Send("disconnect");
     fSocket->Close();
     delete fSocket;
     delete fSocketHandler;
@@ -539,6 +542,16 @@ void AliMonitorClient::CloseWindow()
   if (fMenuOptions->IsEntryChecked(kMenuOptSaveOnExit)) {
     SaveSettings();
   }
+  if (fSocket) {
+    fSocketHandler->Remove();
+    fSocket->Send("disconnect");
+    fSocket->Close();
+    delete fSocket;
+    fSocket = NULL;
+    delete fSocketHandler;
+    fSocketHandler = NULL;
+  }
+
   gApplication->Terminate(0);
 }
 
@@ -1013,8 +1026,8 @@ Bool_t AliMonitorClient::ConnectToServer()
                              "OnNewData()");
       fSocketHandler->Add();
       TInetAddress adr = fSocket->GetInetAddress();
-      Info("ConnectToServer", "connected to server:\n %s (%s), port %d\n",
-          adr.GetHostName(), adr.GetHostAddress(), adr.GetPort());
+      AliInfo(Form("connected to server: %s (%s), port %d",
+                  adr.GetHostName(), adr.GetHostAddress(), adr.GetPort()));
       fMenuFile->HideEntry(kMenuFileConnect);
       fMenuFile->HideEntry(kMenuFileOpen);
       fMenuFile->EnableEntry(kMenuFileDisconnect);
@@ -1042,7 +1055,7 @@ void AliMonitorClient::DisconnectFromServer()
 
   // disconnect from the server
   fSocketHandler->Remove();
-  fSocket->Send("Finished"); 
+  fSocket->Send("disconnect");
   fSocket->Close();
   delete fSocket;
   fSocket = NULL;
@@ -1339,8 +1352,7 @@ Bool_t AliMonitorClient::SaveFavorites()
   }
 
   fclose(file);
-  Info("SaveFavorites", "favorites saved to file %s", 
-       fFavoritesFileName.Data());
+  AliInfo(Form("favorites saved to file %s", fFavoritesFileName.Data()));
   return kTRUE;
 }
 
@@ -1546,8 +1558,8 @@ Bool_t AliMonitorClient::SaveReference()
   fReference->Write();
   file->Close();
   delete file;
-  Info("SaveReference", "reference histograms saved to file %s", 
-       fReferenceFileName.Data());
+  AliInfo(Form("reference histograms saved to file %s", 
+              fReferenceFileName.Data()));
   return kTRUE;
 }
 
@@ -1654,7 +1666,7 @@ void AliMonitorClient::LoadSettings()
   }
 
   fclose(file);
-  Info("LoadSettings", "settings from file %s applied", fileName);
+  AliDebug(1, Form("settings from file %s applied", fileName));
   free(fileName);
 }
 
@@ -1707,7 +1719,7 @@ void AliMonitorClient::SaveSettings()
          fMenuOptions->IsEntryChecked(kMenuOptSaveOnExit));
 
   fclose(file);
-  Info("SaveSettings", "settings saved to file %s", fileName);
+  AliInfo(Form("settings saved to file %s", fileName));
   free(fileName);
 }
 
@@ -1873,18 +1885,42 @@ Bool_t AliMonitorClient::CheckForNewData()
 {
 // check whether the monitor process server sent new data
 
-  // receive a message from the server
+  // disable the socket handler in this method
   if (!fSocket || !fSocket->IsValid()) return kFALSE;
+  fSocketHandler->Remove();
+
+  // receive a control message from the server
+  char controlMessage[256];
+  if (fSocket->Recv(controlMessage, 255) <= 0) {
+    fSocketHandler->Add();
+    return kFALSE;
+  }
+
+  // if it is new histogram data, send ok
+  if ((strcmp(controlMessage, "histograms") != 0) ||
+      (fSocket->Send("ok") <= 0)) {
+    fSocketHandler->Add();
+    return kFALSE;
+  }
+
+  // get the histogram data
   TMessage* message = NULL;
-  Int_t result = fSocket->Recv(message);
+  if (fSocket->Recv(message) <= 0) {
+    fSocketHandler->Add();
+    return kFALSE;
+  }
 
   // replace the old folder of monitor histos with the new one
-  if (result > 0) {
+  if (message->GetClass()->InheritsFrom(TFolder::Class())) {
     if (fFolder) delete fFolder;
     fFolder = (TFolder*) message->ReadObject(message->GetClass());
+    delete message;
+    fSocketHandler->Add();
     return kTRUE;
   }
 
+  delete message;
+  fSocketHandler->Add();
   return kFALSE;
 }