OLD | NEW |
| (Empty) |
1 // Copyright 2013 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 NET_WEBSOCKETS_WEBSOCKET_EXTENSION_H_ | |
6 #define NET_WEBSOCKETS_WEBSOCKET_EXTENSION_H_ | |
7 | |
8 #include <string> | |
9 #include <vector> | |
10 | |
11 #include "net/base/net_export.h" | |
12 | |
13 namespace net { | |
14 | |
15 // A WebSocketExtension instance represents a WebSocket extension specified | |
16 // in RFC6455. | |
17 class NET_EXPORT_PRIVATE WebSocketExtension { | |
18 public: | |
19 // Note that RFC6455 does not allow a parameter with an empty value. | |
20 class NET_EXPORT_PRIVATE Parameter { | |
21 public: | |
22 // Construct a parameter which does not have a value. | |
23 explicit Parameter(const std::string& name); | |
24 // Construct a parameter with a non-empty value. | |
25 Parameter(const std::string& name, const std::string& value); | |
26 | |
27 bool HasValue() const { return !value_.empty(); } | |
28 const std::string& name() const { return name_; } | |
29 const std::string& value() const { return value_; } | |
30 bool Equals(const Parameter& other) const; | |
31 | |
32 // The default copy constructor and the assignment operator are defined: | |
33 // we need them. | |
34 private: | |
35 std::string name_; | |
36 std::string value_; | |
37 }; | |
38 | |
39 WebSocketExtension(); | |
40 explicit WebSocketExtension(const std::string& name); | |
41 ~WebSocketExtension(); | |
42 | |
43 void Add(const Parameter& parameter) { parameters_.push_back(parameter); } | |
44 const std::string& name() const { return name_; } | |
45 const std::vector<Parameter>& parameters() const { return parameters_; } | |
46 bool Equals(const WebSocketExtension& other) const; | |
47 | |
48 // The default copy constructor and the assignment operator are defined: | |
49 // we need them. | |
50 private: | |
51 std::string name_; | |
52 std::vector<Parameter> parameters_; | |
53 }; | |
54 | |
55 } // namespace net | |
56 | |
57 #endif // NET_WEBSOCKETS_WEBSOCKET_EXTENSION_H_ | |
OLD | NEW |