binary log improvements
This commit is contained in:
@@ -581,6 +581,7 @@ void PIBinaryLog::parseLog(PIFile * f, PIBinaryLog::BinLogInfo * info, PIVector<
|
||||
if (info) {
|
||||
BinLogIndex bl_ind;
|
||||
bl_ind.id = br.id;
|
||||
bl_ind.data_size = br.size;
|
||||
bl_ind.pos = f->pos() - br.size - hdr_size;
|
||||
bl_ind.timestamp = br.timestamp;
|
||||
index->append(bl_ind);
|
||||
@@ -667,6 +668,18 @@ bool PIBinaryLog::createIndex() {
|
||||
}
|
||||
|
||||
|
||||
int PIBinaryLog::posForTime(const PISystemTime & time) {
|
||||
int ci = -1;
|
||||
for (uint i = 0; i < index.size(); i++) {
|
||||
if (time <= index[i].timestamp && (filterID.contains(index[i].id) || filterID.isEmpty())) {
|
||||
ci = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ci;
|
||||
}
|
||||
|
||||
|
||||
void PIBinaryLog::seekTo(int rindex) {
|
||||
// piCoutObj << "seekTo";
|
||||
logmutex.lock();
|
||||
@@ -688,13 +701,7 @@ void PIBinaryLog::seekTo(int rindex) {
|
||||
|
||||
|
||||
bool PIBinaryLog::seek(const PISystemTime & time) {
|
||||
int ci = -1;
|
||||
for (uint i=0; i<index.size(); i++) {
|
||||
if (time <= index[i].timestamp && (filterID.contains(index[i].id) || filterID.isEmpty())) {
|
||||
ci = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
int ci = posForTime(time);
|
||||
if (ci >= 0) {
|
||||
seekTo(ci);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user