Seastar
High performance C++ framework for concurrent servers
handlers.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/request.hh>
25 #include <seastar/http/common.hh>
26 #include <seastar/http/reply.hh>
27 
28 #include <unordered_map>
29 
30 namespace seastar {
31 
32 namespace httpd {
33 
34 typedef const http::request& const_req;
35 
42 class handler_base {
43 protected:
44  handler_base() = default;
45  handler_base(const handler_base&) = default;
46 public:
47  virtual ~handler_base() = default;
55  virtual future<std::unique_ptr<http::reply> > handle(const sstring& path,
56  std::unique_ptr<http::request> req, std::unique_ptr<http::reply> rep) = 0;
57 
58 
64  handler_base& mandatory(const sstring& param) {
65  _mandatory_param.push_back(param);
66  return *this;
67  }
68 
69  std::vector<sstring> _mandatory_param;
70 
71 };
72 
73 }
74 
75 }
76 
A representation of a possibly not-yet-computed value.
Definition: future.hh:1238
Definition: handlers.hh:42
virtual future< std::unique_ptr< http::reply > > handle(const sstring &path, std::unique_ptr< http::request > req, std::unique_ptr< http::reply > rep)=0
handler_base & mandatory(const sstring &param)
Definition: handlers.hh:64
Seastar API namespace.
Definition: abort_on_ebadf.hh:26