]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
changing to AMANDA protocol version 2
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 Oct 2007 14:37:17 +0000 (14:37 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 Oct 2007 14:37:17 +0000 (14:37 +0000)
SHUTTLE/DCSClient/AliDCSClient.cxx
SHUTTLE/DCSClient/AliDCSClient.h
SHUTTLE/DCSClient/AliDCSMessage.cxx
SHUTTLE/DCSClient/AliDCSMessage.h

index f20801bca4a82fe453616eaf6b624d6f19452725..6f6c2c79c793df3f4f251093190bd89a4575c1ea 100644 (file)
 
 /*
 $Log$
+Revision 1.5  2007/10/05 12:40:55  acolla
+
+Result error code added to AliDCSClient data members (it was "lost" with the new implementation of TMap* GetAliasValues and GetDPValues).
+
 Revision 1.4  2007/09/14 16:46:14  jgrosseo
 1) Connect and Close are called before and after each query, so one can
 keep the same AliDCSClient object.
@@ -256,7 +260,7 @@ Int_t AliDCSClient::SendMessage(AliDCSMessage& message)
 }
 
 //______________________________________________________________________
-Int_t AliDCSClient::ReceiveMessage(AliDCSMessage& message) 
+Int_t AliDCSClient::ReceiveMessage(AliDCSMessage& message)
 {
 // receive message from the DCS server
        
@@ -318,11 +322,20 @@ Int_t AliDCSClient::GetValues(AliDCSMessage::RequestType reqType,
                return sResult;
        }
 
-       sResult = ReceiveValueSet(result);
+       Int_t receivedValues = 0;
+
+       while (1)
+       {
+               Int_t tmp = 0;
+               sResult = ReceiveValueSet(result, tmp);
+               if (sResult <= 0)
+                       break;
+               receivedValues += sResult;
+       }
 
        Close();
 
-       return sResult;
+       return receivedValues;
 }
 
 //______________________________________________________________________
@@ -344,15 +357,15 @@ TMap* AliDCSClient::GetValues(AliDCSMessage::RequestType reqType,
 
        for (Int_t subsetBegin = startIndex; subsetBegin < endIndex; subsetBegin += fMultiSplit)
        {
-               Connect();
-       
-               if (!IsConnected()) 
+               Connect();
+
+               if (!IsConnected())
                {
-                       AliError("Not connected!");
-                       delete result;
+                       AliError("Not connected!");
+                       delete result;
                        fResultErrorCode = fgkBadState;
-                       return 0;
-               }
+                       return 0;
+               }
 
                Int_t subsetEnd = subsetBegin + fMultiSplit;
                if (subsetEnd > endIndex)
@@ -361,17 +374,17 @@ TMap* AliDCSClient::GetValues(AliDCSMessage::RequestType reqType,
                AliDCSMessage requestMessage;
                if (fMultiSplit == 1)
                {
-                   // single dp request
-            
-                       TObjString* aRequest = (TObjString*) list->At(subsetBegin);
-                       requestMessage.CreateRequestMessage(reqType, startTime, endTime, aRequest->String());
+                       // single dp request
+
+                       TObjString* aRequest = (TObjString*) list->At(subsetBegin);
+                       requestMessage.CreateRequestMessage(reqType, startTime, endTime, aRequest->String());
                }
                else
                {
-                   // multi dp request
-            
-                   requestMessage.CreateMultiRequestMessage(reqType,
-                               startTime, endTime);
+                       // multi dp request
+
+                       requestMessage.CreateMultiRequestMessage(reqType,
+                               startTime, endTime);
 
                        for (Int_t i=subsetBegin; i<subsetEnd; i++)
                        {
@@ -382,127 +395,117 @@ TMap* AliDCSClient::GetValues(AliDCSMessage::RequestType reqType,
                                        fResultErrorCode = fgkBadMessage;
                                        return 0;
                                }
-                       }
-               }
-       
-               if ((fResultErrorCode = SendMessage(requestMessage)) < 0)
-               {
-                    AliError(Form("Can't send request message! Reason: %s",
-                            GetErrorString(fResultErrorCode)));
-                    Close();
-                    delete result;
-                    return 0;
+                       }
+               }
+
+               if ((fResultErrorCode = SendMessage(requestMessage)) < 0)
+               {
+                       AliError(Form("Can't send request message! Reason: %s",
+                               GetErrorString(fResultErrorCode)));
+                       Close();
+                       delete result;
+                       return 0;
                }
-    
-               for (Int_t i=subsetBegin; i<subsetEnd; i++)
-               {
-                       TObjString* aRequest = (TObjString*) list->At(i);
-               
-                       TObjArray* resultSet = new TObjArray();
+
+               while (1)
+               {
+                       TObjArray* resultSet = new TObjArray();
                        resultSet->SetOwner(1);
-    
-                       if ((fResultErrorCode = ReceiveValueSet(resultSet)) < 0) 
-                       {
-                               AliError(Form("Can't get values for %s!" ,
-                               aRequest->String().Data()));
-    
-                               delete resultSet;
-                               result->DeleteValues();
-                               delete result;
-                               return 0;
-                       }
-
-                       result->Add(aRequest, resultSet);
-                  }
-
-              Close();
-
-                  AliInfo(Form("Retrieved entries %d..%d (total %d..%d); E.g. %s has %d values collected",
-                                       subsetBegin, subsetEnd, startIndex, endIndex, list->At(subsetBegin)->GetName(), ((TObjArray*)
-                                       result->GetValue(list->At(subsetBegin)->GetName()))->GetEntriesFast()));
-               
-           }
 
-       return result;
-}
-       
-//______________________________________________________________________
-Int_t AliDCSClient::ReceiveValueSet(TObjArray* result)
-{
-// receive set of values 
+                       Int_t ownerIndex = -1;
+                       fResultErrorCode = ReceiveValueSet(resultSet, ownerIndex);
 
-       Int_t sResult;
+                       if (fResultErrorCode < 0)
+                       {
+                               AliError("Can't get values");
 
-       AliDCSMessage responseMessage;
-       if ((sResult = ReceiveMessage(responseMessage)) < 0) {
-               AliError(Form("Can't receive response message! Reason: %s",
-                       GetErrorString(sResult)));
-               return sResult;
-       }       
+                               delete resultSet;
+                               result->DeleteValues();
+                               delete result;
+                               return 0;
+                       }
 
-       UInt_t valueCount;
+                       if (ownerIndex < 0)
+                       {
+                               // no more values
+                               delete resultSet;
+                               break;
+                       }
 
-       if (responseMessage.GetType() == AliDCSMessage::kCount) {
-               valueCount = responseMessage.GetCount();
+                       TObjString* aRequest = (TObjString*) list->At(ownerIndex + subsetBegin);
+                       //AliInfo(Form("Received %d values for entry %d, that is %s", resultSet->GetEntries(),
+                       //      ownerIndex + subsetBegin, aRequest->String().Data()));
+
+                       TObjArray* target = dynamic_cast<TObjArray*> (result->GetValue(aRequest));
+                       if (target)
+                       {
+                               target->AddAll(resultSet);
+                               //AliInfo(Form("Now we have %d entries", target->GetEntries()));
+                               resultSet->SetOwner(0);
+                               delete resultSet;
+                       }
+                       else
+                               result->Add(aRequest, resultSet);
+               }
 
-       } else if (responseMessage.GetType() == AliDCSMessage::kError) {
-               fServerErrorCode = responseMessage.GetErrorCode();
-               fServerError = responseMessage.GetErrorString();
+               Close();
 
-               return AliDCSClient::fgkServerError;
+               AliInfo(Form("Retrieved entries %d..%d (total %d..%d); E.g. %s has %d values collected",
+                       subsetBegin, subsetEnd-1, startIndex, endIndex-1, list->At(subsetBegin)->GetName(), ((TObjArray*)
+                       result->GetValue(list->At(subsetBegin)->GetName()))->GetEntriesFast()));
 
-       } else {
-               AliError("Bad message type received!"); 
-               return AliDCSClient::fgkBadMessage;
        }
 
-       UInt_t receivedValues = 0;
-
-       AliDCSValue::Type valueType = AliDCSValue::kInvalid;
-
-       while (receivedValues < valueCount) {
+       return result;
+}
+       
+//______________________________________________________________________
+Int_t AliDCSClient::ReceiveValueSet(TObjArray* result, Int_t& ownerIndex)
+{
+       // receive set of values
 
-                AliDCSMessage message;
+       AliDCSMessage message;
+       Int_t sResult = ReceiveMessage(message);
+       if (sResult < 0)
+       {
+               AliError(Form("Can't receive message! Reason: %s", GetErrorString(sResult)));
+               return sResult;
+       }
 
-                if ((sResult = ReceiveMessage(message)) < 0) {
-                        AliError(Form("Can't receive message! Reason: %s",
-                               GetErrorString(sResult)));
-                        return sResult;
-                }
+       if (message.GetType() == AliDCSMessage::kResultSet)
+       {
+               // this was the last message
+               ownerIndex = message.GetOwnerIndex();
+               if (ownerIndex < 0)
+                       return 0;
 
-                if (message.GetType() == AliDCSMessage::kResultSet) {
+               sResult = message.GetValues(result);
 
-                       if (valueType == AliDCSValue::kInvalid) {
-                               valueType = message.GetValueType();
-                       } else {
-                               if (valueType != message.GetValueType()) {
-                                       AliError("Unexpected value type!");
-                                       return AliDCSClient::fgkBadMessage;
-                               }
-                       }
+               AliDCSMessage nextMessage;
+               nextMessage.CreateNextMessage();
 
-                       receivedValues += message.GetValues(result);
+               if ((fResultErrorCode = SendMessage(nextMessage)) < 0)
+               {
+                       AliError(Form("Can't send next message! Reason: %s",
+                               GetErrorString(fResultErrorCode)));
+                       Close();
+                       return AliDCSClient::fgkCommError;
+               }
 
-                       if (receivedValues > valueCount) {
-                               AliError("Message contains more values than expected!");
-                               return AliDCSClient::fgkBadMessage;
-                       }
+               return sResult;
+       }
+       else if (message.GetType() == AliDCSMessage::kError)
+       {
+               fServerErrorCode = message.GetErrorCode();
+               fServerError = message.GetErrorString();
 
-               } else if (message.GetType() == AliDCSMessage::kError) {
-                               fServerErrorCode = 
-                                       responseMessage.GetErrorCode();
-                               fServerError = responseMessage.GetErrorString();
+               return AliDCSClient::fgkServerError;
+       }
 
-                               return AliDCSClient::fgkServerError;
-               } else {
-                        AliError("Bad message type received!");
-                        return AliDCSClient::fgkBadMessage;
-                }       
-        }       
-       
-       return receivedValues;
+       AliError("Bad message type received!");
+       return AliDCSClient::fgkBadMessage;
 }
-               
+
 //______________________________________________________________________
 Int_t AliDCSClient::GetDPValues(const char* dpName, UInt_t startTime,
                                UInt_t endTime, TObjArray* result)
index 4719b0e89a4a61d7e17d8bd0e1195a220db0ac36..df1bb6b0e28d9585004ae2ee5975998f291a4cf0 100644 (file)
@@ -59,7 +59,6 @@ public:
 
         void Close();
 
-
         static const char* GetErrorString(Int_t code);
 
 private:
@@ -84,11 +83,8 @@ private:
        Bool_t Connect();
 
        Int_t SendBuffer(const char* buffer, Int_t size);
-
        Int_t ReceiveBuffer(char* buffer, Int_t size);
-
        Int_t SendMessage(AliDCSMessage& message);
-
        Int_t ReceiveMessage(AliDCSMessage& message);
 
        Int_t GetValues(AliDCSMessage::RequestType requestType,
@@ -99,7 +95,7 @@ private:
                const TSeqCollection* list, UInt_t startTime, UInt_t endTime,
                Int_t startIndex, Int_t endIndex);
 
-       Int_t ReceiveValueSet(TObjArray* result);
+       Int_t ReceiveValueSet(TObjArray* result, Int_t& ownerIndex);
 
        AliDCSClient(const AliDCSClient& other);                // not implemented
        AliDCSClient& operator= (const AliDCSClient& other);    // not implemented
index 6a46c4844d7c017c4e2016b65ad682ab8d956bed..b73ca52a58aebbc2fb9e7fc8b95e555d13ad9365 100644 (file)
 
 /*
 $Log$
+Revision 1.1  2006/11/06 14:22:47  jgrosseo
+major update (Alberto)
+o) reading of run parameters from the logbook
+o) online offline naming conversion
+o) standalone DCSclient package
+
 Revision 1.7  2006/10/02 16:38:39  jgrosseo
 update (alberto):
 fixed memory leaks
@@ -102,7 +108,7 @@ AliDCSMessage::AliDCSMessage():
        TObject(), fMessage(NULL), fMessageSize(0), fType(kInvalid),
        fRequestType(kNoneType), fStartTime(0), fEndTime(0),
        fRequestString(""), fCount(0),
-       fValueType(AliDCSValue::kInvalid), fValues(),
+       fOwnerIndex(0), fValueType(AliDCSValue::kInvalid), fValues(),
        fErrorCode(kNoneError), fErrorString(""),
        fRequestStrings()
 {
@@ -117,7 +123,7 @@ AliDCSMessage::AliDCSMessage(const char* message, UInt_t size):
         TObject(), fMessage(NULL), fMessageSize(size), fType(kInvalid),
        fRequestType(kNoneType), fStartTime(0), fEndTime(0),
        fRequestString(""), fCount(0),
-       fValueType(AliDCSValue::kInvalid), fValues(),
+       fOwnerIndex(0), fValueType(AliDCSValue::kInvalid), fValues(),
        fErrorCode(kNoneError), fErrorString(""),
        fRequestStrings()
 {
@@ -135,7 +141,7 @@ AliDCSMessage::AliDCSMessage(const AliDCSMessage& /*other*/):
        TObject(), fMessage(NULL), fMessageSize(0), fType(kInvalid),
        fRequestType(kNoneType), fStartTime(0), fEndTime(0),
        fRequestString(""), fCount(0),
-       fValueType(AliDCSValue::kInvalid), fValues(),
+       fOwnerIndex(0), fValueType(AliDCSValue::kInvalid), fValues(),
        fErrorCode(kNoneError), fErrorString(""),
        fRequestStrings()
 {
@@ -225,12 +231,12 @@ void AliDCSMessage::CreateErrorMessage(ErrorCode errorCode,
        fErrorString = errorString;
 }
 
-/*
+
 void AliDCSMessage::CreateNextMessage() {
        DestroyMessage();
 
        fType = AliDCSMessage::kNext;
-} */
+}
 
 //______________________________________________________________________
 void AliDCSMessage::DestroyMessage() 
@@ -317,7 +323,7 @@ Char_t AliDCSMessage::GetByte(const char* buf)
 }
 
 //______________________________________________________________________
-UChar_t AliDCSMessage::GetUByte(const char* buf) 
+UChar_t AliDCSMessage::GetUByte(const char* buf)
 {
 // get ubyte value from buf 
 
@@ -383,14 +389,14 @@ TString AliDCSMessage::GetString(const char* buf, Int_t maxLen)
 }
 
 //______________________________________________________________________
-void AliDCSMessage::StoreHeader() 
+void AliDCSMessage::StoreHeader()
 {
 // store header message
        
        SetUByte(fMessage + ID_OFFSET, 'A');
        SetUByte(fMessage + ID_OFFSET + 1, 'D');
 
-       SetUByte(fMessage + VERSION_OFFSET, 1);
+       SetUByte(fMessage + VERSION_OFFSET, 2);
 
        SetUByte(fMessage + TYPE_OFFSET, fType);
 
@@ -398,7 +404,7 @@ void AliDCSMessage::StoreHeader()
 }
 
 //______________________________________________________________________
-void AliDCSMessage::StoreRequestMessage() 
+void AliDCSMessage::StoreRequestMessage()
 {
 // store request message
        
@@ -513,7 +519,7 @@ void AliDCSMessage::StoreErrorMessage()
 }
 
 //______________________________________________________________________
-void AliDCSMessage::StoreMultiRequestMessage() 
+void AliDCSMessage::StoreMultiRequestMessage()
 {
 // store multi request message
        
@@ -523,7 +529,6 @@ void AliDCSMessage::StoreMultiRequestMessage()
        TObjString* anObjString;
 
        while ((anObjString = (TObjString*) iter.Next())) {
-               assert(anObjString->String().Length() <= 255);
                requestDataSize += anObjString->String().Length() + 1;
        }
 
@@ -543,27 +548,26 @@ void AliDCSMessage::StoreMultiRequestMessage()
 
        while ((anObjString = (TObjString*) iter.Next())) {
                UChar_t strLength = anObjString->String().Length();
-               SetUByte(fMessage + cursor, strLength);
-               cursor += 1;
-               strncpy(fMessage + cursor, anObjString->String().Data(), 
+               strncpy(fMessage + cursor, anObjString->String().Data(),
                        strLength);
                cursor += strLength;
+               SetUByte(fMessage + cursor, 0);
+               cursor += 1;
        }
 }
 
 //______________________________________________________________________
-/*
-void AliDCSMessage::StoreNextMessage() {
-
+void AliDCSMessage::StoreNextMessage()
+{
         fMessageSize = HEADER_SIZE;
 
         fMessage = new char[fMessageSize];
 
-        StoreHeader(); 
-} */
+        StoreHeader();
+}
 
 //______________________________________________________________________
-Bool_t AliDCSMessage::ValidateHeader(const char* buf) 
+Bool_t AliDCSMessage::ValidateHeader(const char* buf)
 {
 // validate message header
 
@@ -572,7 +576,7 @@ Bool_t AliDCSMessage::ValidateHeader(const char* buf)
                return kFALSE;
        }
 
-       if (buf[VERSION_OFFSET] != 1) {
+       if (buf[VERSION_OFFSET] != 2) {
                AliError("Bad message version!");
                return kFALSE;
        }
@@ -651,85 +655,91 @@ void AliDCSMessage::LoadResultSetMessage()
     return;
   }
 
+  fOwnerIndex = GetInt(fMessage + INDEX_OFFSET);
+
   fValueType = (AliDCSValue::Type) GetUByte(fMessage + SVT_OFFSET);
   UInt_t count = GetUInt(fMessage + VALUE_COUNT_OFFSET);
 
   UInt_t cursor = VALUES_OFFSET;
 
-  if (fValueType == AliDCSValue::kBool) {
-    if (VALUES_OFFSET + count + count * sizeof(UInt_t) >
-      fMessageSize) {
-      AliError("Too many bool values for this buffer size!");
-      return;
-    }
-
-    for (UInt_t k = 0; k < count; k ++) {
-      Bool_t aBool = GetBool(fMessage + cursor);
-      cursor += 1;
-      UInt_t timeStamp = GetUInt(fMessage + cursor);
-      cursor += sizeof(UInt_t);
-      fValues->Add(new AliDCSValue(aBool, timeStamp));
-    }
-  } else if (fValueType == AliDCSValue::kChar) {
-    if (VALUES_OFFSET + count + count * sizeof(UInt_t) >
-      fMessageSize) {
-      AliError("Too many byte values for this buffer size!");
-      return;
-    }
-
-    for (UInt_t k = 0; k < count; k ++) {
-      Char_t aByte = GetByte(fMessage + cursor);
-      cursor += sizeof(Char_t);
-      UInt_t timeStamp = GetUInt(fMessage + cursor);
-      cursor += sizeof(UInt_t);
-      fValues->Add(new AliDCSValue(aByte, timeStamp));
-    }
-  } else if (fValueType == AliDCSValue::kInt) {
-    if (VALUES_OFFSET + count * sizeof(Int_t) +
-      count * sizeof(UInt_t) > fMessageSize) {
-            AliError("Too many int values for this buffer size!");
-            return;
-    }
-
-    for (UInt_t k = 0; k < count; k ++) {
-            Int_t aInt = GetInt(fMessage + cursor);
-            cursor += sizeof(Int_t);
-            UInt_t timeStamp = GetUInt(fMessage + cursor);
-            cursor += sizeof(UInt_t);
-            fValues->Add(new AliDCSValue(aInt, timeStamp));
-    }
-
-  } else if (fValueType == AliDCSValue::kUInt) {
-    if (VALUES_OFFSET + count * sizeof(UInt_t) +
-      count * sizeof(UInt_t) > fMessageSize) {
-      AliError("Too many uint values for this buffer size!");
-      return;
-    }
-
-    for (UInt_t k = 0; k < count; k ++) {
-      UInt_t aUInt = GetUInt(fMessage + cursor);
-      cursor += sizeof(UInt_t);
-      UInt_t timeStamp = GetUInt(fMessage + cursor);
-      cursor += sizeof(UInt_t);
-      fValues->Add(new AliDCSValue(aUInt, timeStamp));
-    }
-  } else if (fValueType == AliDCSValue::kFloat) {
-    if (VALUES_OFFSET + count * sizeof(Float_t) +
-      count * sizeof(UInt_t) > fMessageSize) {
-      AliError("Too many float values for this buffer size!");
-      return;
-    }
-
-    for (UInt_t k = 0; k < count; k ++) {
-      Float_t aFloat = GetFloat(fMessage + cursor);
-      cursor += sizeof(Float_t);
-      UInt_t timeStamp = GetUInt(fMessage + cursor);
-      cursor += sizeof(UInt_t);
-      fValues->Add(new AliDCSValue(aFloat, timeStamp));
+  // -1 end of results
+  if (fOwnerIndex >= 0)
+  {
+    if (fValueType == AliDCSValue::kBool) {
+      if (VALUES_OFFSET + count + count * sizeof(UInt_t) >
+        fMessageSize) {
+        AliError("Too many bool values for this buffer size!");
+        return;
+      }
+
+      for (UInt_t k = 0; k < count; k ++) {
+        Bool_t aBool = GetBool(fMessage + cursor);
+        cursor += 1;
+        UInt_t timeStamp = GetUInt(fMessage + cursor);
+        cursor += sizeof(UInt_t);
+        fValues->Add(new AliDCSValue(aBool, timeStamp));
+      }
+    } else if (fValueType == AliDCSValue::kChar) {
+      if (VALUES_OFFSET + count + count * sizeof(UInt_t) >
+        fMessageSize) {
+        AliError("Too many byte values for this buffer size!");
+        return;
+      }
+
+      for (UInt_t k = 0; k < count; k ++) {
+        Char_t aByte = GetByte(fMessage + cursor);
+        cursor += sizeof(Char_t);
+        UInt_t timeStamp = GetUInt(fMessage + cursor);
+        cursor += sizeof(UInt_t);
+        fValues->Add(new AliDCSValue(aByte, timeStamp));
+      }
+    } else if (fValueType == AliDCSValue::kInt) {
+      if (VALUES_OFFSET + count * sizeof(Int_t) +
+        count * sizeof(UInt_t) > fMessageSize) {
+              AliError("Too many int values for this buffer size!");
+              return;
+      }
+
+      for (UInt_t k = 0; k < count; k ++) {
+              Int_t aInt = GetInt(fMessage + cursor);
+              cursor += sizeof(Int_t);
+              UInt_t timeStamp = GetUInt(fMessage + cursor);
+              cursor += sizeof(UInt_t);
+              fValues->Add(new AliDCSValue(aInt, timeStamp));
+      }
+
+    } else if (fValueType == AliDCSValue::kUInt) {
+      if (VALUES_OFFSET + count * sizeof(UInt_t) +
+        count * sizeof(UInt_t) > fMessageSize) {
+        AliError("Too many uint values for this buffer size!");
+        return;
+      }
+
+      for (UInt_t k = 0; k < count; k ++) {
+        UInt_t aUInt = GetUInt(fMessage + cursor);
+        cursor += sizeof(UInt_t);
+        UInt_t timeStamp = GetUInt(fMessage + cursor);
+        cursor += sizeof(UInt_t);
+        fValues->Add(new AliDCSValue(aUInt, timeStamp));
+      }
+    } else if (fValueType == AliDCSValue::kFloat) {
+      if (VALUES_OFFSET + count * sizeof(Float_t) +
+        count * sizeof(UInt_t) > fMessageSize) {
+        AliError("Too many float values for this buffer size!");
+        return;
+      }
+
+      for (UInt_t k = 0; k < count; k ++) {
+        Float_t aFloat = GetFloat(fMessage + cursor);
+        cursor += sizeof(Float_t);
+        UInt_t timeStamp = GetUInt(fMessage + cursor);
+        cursor += sizeof(UInt_t);
+        fValues->Add(new AliDCSValue(aFloat, timeStamp));
+      }
+
+    } else {
+      AliError("Unknown or invalid value type!");
     }
-
-  } else {
-    AliError("Unknown or invalid value type!");
   }
 
   fType = kResultSet;
@@ -810,11 +820,12 @@ void AliDCSMessage::LoadMultiRequestMessage()
 }
 
 //______________________________________________________________________
-/*
-void AliDCSMessage::LoadNextMessage() {
-       
+void AliDCSMessage::LoadNextMessage()
+{
+       //
+
        fType = kNext;
-} */
+}
 
 //______________________________________________________________________
 void AliDCSMessage::StoreToBuffer() 
@@ -839,9 +850,9 @@ void AliDCSMessage::StoreToBuffer()
                case kMultiRequest:
                        StoreMultiRequestMessage();
                        break;
-/*             case kNext:
+               case kNext:
                        StoreNextMessage();
-                       break; */
+                       break;
                default:
                        AliError("Can't store to buffer invalid message!");
        }
@@ -898,9 +909,9 @@ void AliDCSMessage::LoadFromBuffer()
                case kMultiRequest:
                        LoadMultiRequestMessage();
                        break;
-/*             case kNext:
+               case kNext:
                        LoadNextMessage();
-                       break; */
+                       break;
                default:
                        AliError("Invalid message type!");
        }       
@@ -1155,7 +1166,7 @@ TString AliDCSMessage::GetErrorString() const
 
 
 //______________________________________________________________________
-void AliDCSMessage::Print(Option_t* /*option*/) const 
+void AliDCSMessage::Print(Option_t* /*option*/) const
 {
 // print message
 
@@ -1205,6 +1216,9 @@ void AliDCSMessage::Print(Option_t* /*option*/) const
 
                case kResultSet: {
                        printString += "ResultSet\n";
+                       printString += " OwnerIndex: ";
+                       printString += fOwnerIndex;
+                       printString += '\n';
                        printString += " SimpleValueType: ";
                        printString += fValueType;
                        printString += '\n';
@@ -1279,10 +1293,10 @@ void AliDCSMessage::Print(Option_t* /*option*/) const
                        break;
                }       
 
-/*             case kNext: {
+               case kNext: {
                        printString += "Next\n";
                        break;
-               } */
+               }
 
                default:
                        printString += "Invalid\n";
index 73c16bd4b8b64660d5916fbc504006d8ac82d1b9..ab539041dff6a9643cfa647f0ea7b4d6bb3ec731 100644 (file)
 
 #define COUNT_OFFSET HEADER_SIZE
 
-#define SVT_OFFSET HEADER_SIZE
-#define VALUE_COUNT_OFFSET (HEADER_SIZE + 1)
-#define VALUES_OFFSET (HEADER_SIZE + 5)
+#define INDEX_OFFSET HEADER_SIZE
+#define SVT_OFFSET (INDEX_OFFSET + 4)
+#define VALUE_COUNT_OFFSET (SVT_OFFSET + 1)
+#define VALUES_OFFSET (VALUE_COUNT_OFFSET + 4)
 
 #define ERROR_CODE_OFFSET HEADER_SIZE
 #define ERROR_STRING_OFFSET (HEADER_SIZE + 1)
@@ -48,8 +49,8 @@ public:
                kCount = 2,
                kResultSet = 3,
                kError = 4,
-               kMultiRequest = 5
-//             kNext = 6
+               kMultiRequest = 5,
+               kNext = 6
        };
 
        enum RequestType {
@@ -69,26 +70,22 @@ public:
        };
 
 
-       AliDCSMessage();
+       AliDCSMessage();
 
         AliDCSMessage(const char* buffer, UInt_t size);
-
         virtual ~AliDCSMessage();
 
-
-        void CreateRequestMessage(RequestType type, 
+        void CreateRequestMessage(RequestType type,
                UInt_t startTime, UInt_t endTime, const char* request);
 
-        void CreateMultiRequestMessage(RequestType type, 
+        void CreateMultiRequestMessage(RequestType type,
                UInt_t startTime, UInt_t endTime);
 
         void CreateCountMessage(UInt_t count);
-
         void CreateResultSetMessage(AliDCSValue::Type type);
-
         void CreateErrorMessage(ErrorCode code, const char* errorString);
-       
-       //void CreateNextMessage();
+
+       void CreateNextMessage();
 
        void DestroyMessage();
 
@@ -136,7 +133,9 @@ public:
         // ResultSetType Message getters ans setters       
         AliDCSValue::Type GetValueType() const;
 
-        UInt_t GetValueCount() const;
+        Int_t GetOwnerIndex() const { return fOwnerIndex; }
+
+       UInt_t GetValueCount() const;
 
         UInt_t GetValues(TObjArray* result) const;
 
@@ -157,7 +156,7 @@ public:
 private:
 
        AliDCSMessage(const AliDCSMessage& other);      
-       AliDCSMessage& operator= (const AliDCSMessage& other);  
+       AliDCSMessage& operator= (const AliDCSMessage& other);
 
 
        char* fMessage;         // Array of bytes building the message
@@ -180,6 +179,7 @@ private:
        UInt_t fCount;                  // count counter
 
        //ResultSet message fields
+  Int_t fOwnerIndex;  // owner index of this result
        AliDCSValue::Type fValueType; // Simple value type
 
        TObjArray* fValues;             // array of received values
@@ -206,7 +206,7 @@ private:
 
        void StoreMultiRequestMessage();
 
-       //void StoreNextMessage();
+       void StoreNextMessage();
 
 
        Bool_t ValidateHeader(const char* buf);
@@ -221,7 +221,7 @@ private:
 
        void LoadMultiRequestMessage();
 
-       //void LoadNextMessage();
+       void LoadNextMessage();
 
        // Buffer helpers
        static void SetBool(char* buf, Bool_t val);