| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

FileEndRecord.cc

Go to the documentation of this file.
00001 /*
00002  *  FileEndRecord.cc
00003  *  RawDataBundle
00004  *
00005  *  Created by Simon Patton on 7/18/10.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include "FileReadoutFormat/FileEndRecord.h"
00010 
00011 #include "FileReadoutFormat/FileTraits.h"
00012 
00013 using DybDaq::ByteBuffer;
00014 using DybDaq::FileEndRecord;
00015 using DybDaq::FileTraits;
00016 
00017 FileEndRecord::FileEndRecord(const FileTraits::FileDateTime& dateTime,
00018                              const unsigned int fileEventCount,
00019                              const unsigned int filePayloadSize,
00020                              const unsigned int runEventCount,
00021                              const unsigned int runPayloadSize,
00022                              const unsigned int status,
00023                              const FileTraits& traits) :
00024 FileBuffer(new char[traits.recordSize(FileTraits::kFileEndRecord) * kBytesInInt],
00025            traits,
00026            FileTraits::kFileEndRecord) {
00027     setDateTime(dateTime);
00028     setFileEventCount(fileEventCount);
00029     setFilePayloadSize(filePayloadSize);
00030     setRunEventCount(runEventCount);
00031     setRunPayloadSize(runPayloadSize);
00032     setStatus(status);
00033     writeField(traits.marker(FileTraits::kFileEndMarker),
00034                FileTraits::kEndFileMarker);
00035 }
00036 
00037 FileEndRecord::FileEndRecord(const ByteBuffer& byteBuffer,
00038                                                          const FileTraits& traits) :
00039 FileBuffer(byteBuffer,
00040                    traits) {
00041 }
00042 
00043 FileEndRecord::~FileEndRecord() {
00044 }
00045 
00046 bool FileEndRecord::isMarked(unsigned int marker) const {
00047     return FileTraits::kFileEndRecord == marker;
00048 }
00049 
00050 FileTraits::FileDateTime FileEndRecord::dateTime() const {
00051     const unsigned int closeDate = date();
00052     const unsigned int closeTime = time();
00053     struct tm tmStruct;
00054     tmStruct.tm_sec = closeTime % 100U;;
00055     tmStruct.tm_min = (closeTime /100U) % 100U;
00056     tmStruct.tm_hour = (closeTime /10000U) % 100U;
00057     tmStruct.tm_mday = (closeDate / 1000000U) % 100U;
00058     tmStruct.tm_mon = ((closeDate / 10000U) % 100U) - 1;
00059     tmStruct.tm_year = (closeDate % 10000U) - 1900;
00060     tmStruct.tm_wday = 0;
00061     tmStruct.tm_yday = 0;
00062     tmStruct.tm_isdst = 0;
00063     return tmStruct;
00064 }
00065 
00066 unsigned int FileEndRecord::fileEventCount() const {
00067         return readUnsignedInt(FileTraits::kFileEventCount);
00068 }
00069 
00070 unsigned int FileEndRecord::filePayloadSize() const {
00071         return readUnsignedInt(FileTraits::kFilePayloadSize);
00072 }
00073 
00074 unsigned int FileEndRecord::runEventCount() const {
00075         return readUnsignedInt(FileTraits::kRunEventCount);
00076 }
00077 
00078 unsigned int FileEndRecord::runPayloadSize() const {
00079         return readUnsignedInt(FileTraits::kRunPayloadSize);
00080 }
00081 
00082 unsigned int FileEndRecord::status() const {
00083         return readUnsignedInt(FileTraits::kFileEndStatus);
00084 }
00085 
00086 bool FileEndRecord::endMarkerFound() const {
00087         return fileTraits().marker(FileTraits::kEndFileMarker) == readUnsignedInt(FileTraits::kFileEndStatus);
00088 }
00089 
00090 unsigned int FileEndRecord::date() const {
00091         return readUnsignedInt(FileTraits::kFileCloseDate);
00092 }
00093 
00094 unsigned int FileEndRecord::time() const {
00095         return readUnsignedInt(FileTraits::kFileCloseTime);
00096 }
00097 
00098 unsigned int FileEndRecord::formatComponent() const {
00099     return FileTraits::kFileEndRecord;
00100 }
00101 
00102 void FileEndRecord::setDateTime(const FileTraits::FileDateTime& dateTime) {
00103     setDate(dateTime.tm_year + 1900
00104             + (dateTime.tm_mon + 1) * 10000
00105             + dateTime.tm_mday * 1000000);
00106     setTime(dateTime.tm_sec
00107             + dateTime.tm_min * 100
00108             + dateTime.tm_hour * 10000);
00109 }
00110 
00111 void FileEndRecord::setFileEventCount(const unsigned int fileEventCount) {
00112     writeField(fileEventCount,
00113                FileTraits::kFileEventCount);
00114 }
00115 
00116 void FileEndRecord::setFilePayloadSize(const unsigned int filePayloadSize) {
00117     writeField(filePayloadSize,
00118                FileTraits::kFilePayloadSize);
00119 }
00120 
00121 void FileEndRecord::setRunEventCount(const unsigned int runEventCount) {
00122     writeField(runEventCount,
00123                FileTraits::kRunEventCount);
00124 }
00125 
00126 void FileEndRecord::setRunPayloadSize(const unsigned int runPayloadSize) {
00127     writeField(runPayloadSize,
00128                FileTraits::kRunPayloadSize);
00129 }
00130 
00131 void FileEndRecord::setStatus(const unsigned int status) {
00132     writeField(status,
00133                FileTraits::kFileEndStatus);
00134 }
00135 
00136 void FileEndRecord::setDate(const unsigned int date) {
00137     writeField(date,
00138                FileTraits::kFileCloseDate);
00139 }
00140 
00141 void FileEndRecord::setTime(const unsigned int time) {
00142     writeField(time,
00143                FileTraits::kFileCloseTime);
00144 }
00145 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:08:33 2011 for FileReadoutFormat by doxygen 1.4.7