Skip to content
Snippets Groups Projects
Commit 85252fd9 authored by Adrien Matta's avatar Adrien Matta :skull_crossbones:
Browse files

* Adding facility to pass RawTree pointer to NPSpectraServer

  - Raw Tree could be requested via NPClientSpectra
parent 3028dc52
No related branches found
No related tags found
No related merge requests found
......@@ -62,19 +62,18 @@ NPL::SpectraServer::SpectraServer(){
m_Spectra = new TList;
NPL::SendInformation("NPL::SpectraServer","Server started");
m_RawTree = NULL;
}
///////////////////////////////////////////////////////////////////////////////
void NPL::SpectraServer::CheckRequest(){
/*FIXME
if(m_Server && m_Monitor){
m_Monitor->ResetInterrupt();
TSocket* s = m_Monitor->Select();
if(s){
TSocket* s = m_Monitor->Select(1);
if(s && s!=(TSocket*)-1){
HandleSocket(s);
}
}
*/
}
////////////////////////////////////////////////////////////////////////////////
......@@ -107,7 +106,7 @@ void NPL::SpectraServer::HandleSocket(TSocket* s){
}
// send requested object back
static TMessage answer(kMESS_OBJECT);
static TMessage answer(kMESS_OBJECT|kMESS_ACK);
answer.SetCompressionLevel(1);
answer.Reset();
TObject* h =NULL;
......@@ -125,6 +124,12 @@ void NPL::SpectraServer::HandleSocket(TSocket* s){
answer.WriteObject(tree);
s->Send(answer);
}
else if (!strcmp(request, "RequestRawTree")){
answer.WriteObject(m_RawTree);
s->Send(answer);
}
else{
h = m_Spectra->FindObject(request);
......
......@@ -26,6 +26,7 @@
#include "TServerSocket.h"
#include "TMonitor.h"
#include "TMessage.h"
#include "TTree.h"
#include "TList.h"
#include "TH1.h"
#include "TH2.h"
......@@ -52,11 +53,14 @@ namespace NPL{
void FillSpectra(const std::string& name,const double& valx);
void FillSpectra(const std::string& name,const double& valx, const double& valy);
void CheckRequest();
// Use for Online purpose
void SetRawTree(TTree* tree){m_RawTree=tree;} ;
private:
bool m_stop;
TServerSocket* m_Server;
TMonitor* m_Monitor;
TTree* m_RawTree;
TList* m_Sockets;
TList* m_Spectra;
};
......
......@@ -63,7 +63,6 @@ bool NPL::SpectraClient::Connect(){
m_Sock = new TSocket(m_Address.c_str(),m_Port);
if(m_Sock->IsValid()){
NPL::SendInformation("NPL::SpectraClient","Successful connection to spectra server");
Sync();
return true;
}
else{
......@@ -187,7 +186,7 @@ TTree* NPL::SpectraClient::GetTree(){
}
TMessage* message=NULL;
m_Sock->Send("RequestTree",kMESS_STRING||kMESS_ACK);
m_Sock->Send("RequestTree",kMESS_STRING|kMESS_ACK);
if(m_Sock->Recv(message)<=0){
if(m_Sock){
......@@ -211,6 +210,46 @@ TTree* NPL::SpectraClient::GetTree(){
return NULL;
}
}
////////////////////////////////////////////////////////////////////////////////
TTree* NPL::SpectraClient::GetRawTree(){
if(!m_Sock || !(m_Sock->IsValid())){
if(m_Sock){
m_Sock->Close("force");
delete m_Sock;
m_Sock = NULL;
}
NPL::SendWarning("NPL::SpectraClient","Update failed: Connection lost");
return NULL;
}
TMessage* message=NULL;
m_Sock->Send("RequestRawTree",kMESS_STRING|kMESS_ACK);
if(m_Sock->Recv(message)<=0){
if(m_Sock){
m_Sock->Close("force");
delete m_Sock;
m_Sock = NULL;
}
NPL::SendWarning("NPL::SpectraClient","Update failed: message return unreadable");
return NULL;
}
if(message){
TTree* tree = (TTree*) message->ReadObject(message->GetClass());
return tree;
}
else{
NPL::SendInformation("NPL::SpectraClient","Server return an empty tree");
return NULL;
}
}
////////////////////////////////////////////////////////////////////////////////
......
......@@ -47,6 +47,7 @@ namespace NPL{
void UpdateTH1(TH1* Old, TH1* New );
// Access the tree
TTree* GetTree();
TTree* GetRawTree();
private: // The sochet use for connection
TSocket* m_Sock;
std::string m_Address;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment