aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/vespa/storageapi/mbusprot/protocolserialization5_2.h
blob: e56b9942fa57dab7def977810c5e9d4a223a1de2 (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
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// @author Vegard Sjonfjell

#pragma once

#include "protocolserialization5_1.h"
#include <vespa/vespalib/util/growablebytebuffer.h>
#include <vespa/storageapi/message/persistence.h>

namespace storage::mbusprot {

class ProtocolSerialization5_2 : public ProtocolSerialization5_1
{
public:
    ProtocolSerialization5_2(const std::shared_ptr<const document::DocumentTypeRepo>& repo)
        : ProtocolSerialization5_1(repo)
    {}

protected:
    void onEncode(GBBuf &, const api::PutCommand &) const override;
    void onEncode(GBBuf &, const api::RemoveCommand &) const override;
    void onEncode(GBBuf &, const api::UpdateCommand &) const override;

    SCmd::UP onDecodePutCommand(BBuf &) const override;
    SCmd::UP onDecodeRemoveCommand(BBuf &) const override;
    SCmd::UP onDecodeUpdateCommand(BBuf &) const override;

    static void decodeTasCondition(api::StorageCommand & cmd, BBuf & buf);
    static void encodeTasCondition(GBBuf & buf, const api::StorageCommand & cmd);
};

}