summaryrefslogtreecommitdiffstats
path: root/storage/src/vespa/storageapi/mbusprot/legacyprotocolserialization.h
blob: f3c6a6f68564dfdedffbae37b725031d9490b27a (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
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once

#include "protocolserialization.h"

namespace storage::mbusprot {

/*
 * Utility base class for pre-v7 (protobuf) serialization implementations.
 *
 * TODO remove on Vespa 8 alongside legacy serialization formats.
 */
class LegacyProtocolSerialization : public ProtocolSerialization {
    const std::shared_ptr<const document::DocumentTypeRepo> _repo;
public:
    explicit LegacyProtocolSerialization(const std::shared_ptr<const document::DocumentTypeRepo>& repo)
        : _repo(repo)
    {}

    const document::DocumentTypeRepo& getTypeRepo() const { return *_repo; }
    const std::shared_ptr<const document::DocumentTypeRepo> getTypeRepoSp() const { return _repo; }

    virtual document::Bucket getBucket(document::ByteBuffer& buf) const = 0;
    virtual void putBucket(const document::Bucket& bucket, vespalib::GrowableByteBuffer& buf) const = 0;
    virtual document::BucketSpace getBucketSpace(document::ByteBuffer& buf) const = 0;
    virtual void putBucketSpace(document::BucketSpace bucketSpace, vespalib::GrowableByteBuffer& buf) const = 0;
    virtual api::BucketInfo getBucketInfo(document::ByteBuffer& buf) const = 0;
    virtual void putBucketInfo(const api::BucketInfo& info, vespalib::GrowableByteBuffer& buf) const = 0;
};

} // storage::mbusprot