aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/attribute/single_raw_attribute_loader.h
blob: 1ed2fd05b2d8731eab8c4b490a0e3608ed197ea5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#pragma once

#include <vespa/vespalib/datastore/atomic_entry_ref.h>
#include <vespa/vespalib/util/rcuvector.h>

namespace search { class AttributeVector; }

namespace vespalib { class Executor; }

namespace search::attribute {

class BlobSequenceReader;
class RawBufferStore;

/**
 * Class for loading a single raw attribute.
 */
class SingleRawAttributeLoader
{
    using AtomicEntryRef = vespalib::datastore::AtomicEntryRef;
    using RefVector = vespalib::RcuVectorBase<AtomicEntryRef>;

    AttributeVector& _attr;
    RefVector&       _ref_vector;
    RawBufferStore&  _raw_store;

    void load_raw_store(BlobSequenceReader& reader, uint32_t docid_limit);
public:
    SingleRawAttributeLoader(AttributeVector& attr, RefVector& ref_vector, RawBufferStore& raw_store);
    ~SingleRawAttributeLoader();
    bool on_load(vespalib::Executor*);
};

}