mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-01-31 14:04:55 +01:00
halfway into new server
This commit is contained in:
@@ -1561,97 +1561,6 @@ int UDPBaseImplementation::startWriting(){ FILE_LOG(logDEBUG) << __AT__ << " sta
|
||||
|
||||
|
||||
while((1<<ithread)&writerthreads_mask){
|
||||
#ifdef VERYDEBUG
|
||||
cout << ithread << " ***waiting to pop out of writing fifo" << endl;
|
||||
#endif
|
||||
//pop
|
||||
for(i=0;i<numListeningThreads;++i){
|
||||
fifo[i]->pop(wbuf[i]);
|
||||
numpackets = (uint16_t)(*((uint16_t*)wbuf[i]));
|
||||
#ifdef VERYDEBUG
|
||||
cout << ithread << " numpackets:" << dec << numpackets << endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef VERYDEBUG
|
||||
cout << ithread << " numpackets:" << dec << numpackets << endl;
|
||||
cout << ithread << " *** writer popped from fifo " << (void*) wbuf[0]<< endl;
|
||||
cout << ithread << " *** writer popped from fifo " << (void*) wbuf[1]<< endl;
|
||||
#endif
|
||||
|
||||
|
||||
//last dummy packet
|
||||
if(numpackets == 0xFFFF){
|
||||
stopWriting(ithread,wbuf);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//for progress
|
||||
if(myDetectorType == EIGER){
|
||||
tempframenum = htonl(*(unsigned int*)((eiger_image_header *)((char*)(wbuf[ithread] + HEADER_SIZE_NUM_TOT_PACKETS)))->fnum);
|
||||
tempframenum += (startFrameIndex-1); //eiger frame numbers start at 1, so need to -1
|
||||
}else if ((myDetectorType == GOTTHARD) && (shortFrame == -1))
|
||||
tempframenum = (((((uint32_t)(*((uint32_t*)(wbuf[ithread] + HEADER_SIZE_NUM_TOT_PACKETS))))+1)& (frameIndexMask)) >> frameIndexOffset);
|
||||
else
|
||||
tempframenum = ((((uint32_t)(*((uint32_t*)(wbuf[ithread] + HEADER_SIZE_NUM_TOT_PACKETS))))& (frameIndexMask)) >> frameIndexOffset);
|
||||
|
||||
if(numWriterThreads == 1)
|
||||
currframenum = tempframenum;
|
||||
else{
|
||||
pthread_mutex_lock(&progress_mutex);
|
||||
if(tempframenum > currframenum)
|
||||
currframenum = tempframenum;
|
||||
pthread_mutex_unlock(&progress_mutex);
|
||||
}
|
||||
//#ifdef VERYDEBUG
|
||||
if(myDetectorType == EIGER)
|
||||
cout << endl <<ithread << " tempframenum:" << hex << tempframenum << " curframenum:" << currframenum << endl;
|
||||
//#endif
|
||||
|
||||
|
||||
//without datacompression: write datacall back, or write data, free fifo
|
||||
if(!dataCompression){
|
||||
|
||||
if (cbAction < DO_EVERYTHING){
|
||||
for(i=0;i<numListeningThreads;++i)
|
||||
rawDataReadyCallBack(currframenum, wbuf[i], numpackets * onePacketSize, sfilefd, guiData,pRawDataReady);
|
||||
}else if (numpackets > 0){
|
||||
for(i=0;i<numListeningThreads;++i)
|
||||
writeToFile_withoutCompression(wbuf[i], numpackets,currframenum);
|
||||
}
|
||||
|
||||
|
||||
if(myDetectorType == EIGER) {
|
||||
copyFrameToGui(wbuf,currframenum);
|
||||
for(i=0;i<numListeningThreads;++i){
|
||||
while(!fifoFree[i]->push(wbuf[i]));
|
||||
#ifdef VERYDEBUG
|
||||
cout << ithread << ":" << i+j << " fifo freed:" << (void*)wbuf[i] << endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
//copy to gui
|
||||
copyFrameToGui(NULL,-1,wbuf[0]+HEADER_SIZE_NUM_TOT_PACKETS);
|
||||
#ifdef VERYVERBOSE
|
||||
cout << ithread << " finished copying" << endl;
|
||||
#endif
|
||||
while(!fifoFree[0]->push(wbuf[0]));
|
||||
#ifdef VERYVERBOSE
|
||||
cout<<"buf freed:"<<(void*)wbuf[0]<<endl;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
//data compression
|
||||
else
|
||||
handleDataCompression(ithread,wbuf,d, xmax, ymax, nf);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user