Seastar
High performance C++ framework for concurrent servers
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
matcher.hh
1/*
2 * This file is open source software, licensed to you under the terms
3 * of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4 * distributed with this work for additional information regarding copyright
5 * ownership. You may not use this file except in compliance with the License.
6 *
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing,
12 * software distributed under the License is distributed on an
13 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 * KIND, either express or implied. See the License for the
15 * specific language governing permissions and limitations
16 * under the License.
17 */
18/*
19 * Copyright 2015 Cloudius Systems
20 */
21
22#pragma once
23
24#include <seastar/http/common.hh>
25
26#include <seastar/core/sstring.hh>
27
28namespace seastar {
29
30namespace httpd {
31
36class matcher {
37public:
38
39 virtual ~matcher() = default;
40
48 virtual size_t match(const sstring& url, size_t ind, parameters& param) = 0;
49};
50
65class param_matcher : public matcher {
66public:
75 explicit param_matcher(const sstring& name, bool entire_path = false)
76 : _name(name), _entire_path(entire_path) {
77 }
78
79 virtual size_t match(const sstring& url, size_t ind, parameters& param)
80 override;
81private:
82 sstring _name;
83 bool _entire_path;
84};
85
92class str_matcher : public matcher {
93public:
98 explicit str_matcher(const sstring& cmp)
99 : _cmp(cmp), _len(cmp.size()) {
100 }
101
102 virtual size_t match(const sstring& url, size_t ind, parameters& param)
103 override;
104private:
105 sstring _cmp;
106 unsigned _len;
107};
108
109}
110
111}
Definition: matcher.hh:36
virtual size_t match(const sstring &url, size_t ind, parameters &param)=0
Definition: matcher.hh:65
param_matcher(const sstring &name, bool entire_path=false)
Definition: matcher.hh:75
virtual size_t match(const sstring &url, size_t ind, parameters &param) override
Definition: common.hh:48
Definition: matcher.hh:92
str_matcher(const sstring &cmp)
Definition: matcher.hh:98
virtual size_t match(const sstring &url, size_t ind, parameters &param) override
Definition: routes.hh:43
Seastar API namespace.
Definition: abort_on_ebadf.hh:26