blob: 57c8cfde96051d68e839f56b454bfba28ddfbbd2 [file] [log] [blame]
Sorin Jianu47a4dd8c2018-10-19 16:34:541// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_UPDATE_CLIENT_PROTOCOL_HANDLER_H_
6#define COMPONENTS_UPDATE_CLIENT_PROTOCOL_HANDLER_H_
7
8#include <memory>
9
10#include "base/macros.h"
11
12namespace update_client {
13
14class ProtocolParser;
15class ProtocolSerializer;
16
17class ProtocolHandlerFactory {
18 public:
19 virtual ~ProtocolHandlerFactory() = default;
20 virtual std::unique_ptr<ProtocolParser> CreateParser() const = 0;
21 virtual std::unique_ptr<ProtocolSerializer> CreateSerializer() const = 0;
22
23 protected:
24 ProtocolHandlerFactory() = default;
25
26 private:
27 DISALLOW_COPY_AND_ASSIGN(ProtocolHandlerFactory);
28};
29
Sorin Jianu55587d32018-11-14 21:43:2730class ProtocolHandlerFactoryJSON final : public ProtocolHandlerFactory {
31 public:
32 // Overrides for ProtocolHandlerFactory.
33 std::unique_ptr<ProtocolParser> CreateParser() const override;
34 std::unique_ptr<ProtocolSerializer> CreateSerializer() const override;
35};
36
Sorin Jianu47a4dd8c2018-10-19 16:34:5437} // namespace update_client
38
39#endif // COMPONENTS_UPDATE_CLIENT_PROTOCOL_HANDLER_H_