HttpService.h
1 /*
2  * Copyright (C) 2020-2026 by Marc Boris Duerner
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * As a special exception, you may use this file as part of a free
10  * software library without restriction. Specifically, if other files
11  * instantiate templates or use macros or inline functions from this
12  * file, or you compile this file and link it with other files to
13  * produce an executable, this file does not by itself cause the
14  * resulting executable to be covered by the GNU General Public
15  * License. This exception does not however invalidate any other
16  * reasons why the executable file might be covered by the GNU Library
17  * General Public License.
18  *
19  * This library is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22  * Lesser General Public License for more details.
23  *
24  * You should have received a copy of the GNU Lesser General Public
25  * License along with this library; if not, write to the Free Software
26  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
27  * MA 02110-1301 USA
28  */
29 
30 #ifndef PT_MCP_HTTPSERVICE_H
31 #define PT_MCP_HTTPSERVICE_H
32 
33 #include <Pt/Mcp/Api.h>
34 #include <Pt/Http/Service.h>
35 #include <Pt/Types.h>
36 
37 namespace Pt {
38 
39 namespace Remoting {
40  class ServiceDefinition;
41 }
42 
43 namespace Mcp {
44 
45 class ToolDeclaration;
46 
53 class PT_MCP_API HttpService : public Http::Service
54 {
55  public:
59  const ToolDeclaration& decl);
60 
63  virtual ~HttpService();
64 
65  protected:
66  // inheritdoc
67  virtual Http::Responder* onGetResponder(const Http::Request& request);
68 
69  // inheritdoc
70  virtual void onReleaseResponder(Http::Responder* resp);
71 
72  private:
73  Remoting::ServiceDefinition* _serviceDef;
74  const ToolDeclaration* _decl;
75  Pt::varint_t _r1;
76  Pt::varint_t _r2;
77 };
78 
79 } // namespace Mcp
80 
81 } // namespace Pt
82 
83 #endif // PT_MCP_HTTPSERVICE_H
Core module.
Definition: Allocator.h:33
HTTP service for MCP.
Definition: HttpService.h:54
HTTP request message.
Definition: Request.h:44
MCP server and tool registry.
Definition: ToolDeclaration.h:129
HTTP service.
Definition: Service.h:47
Remote service definition.
Definition: Api-ServiceDefinition.h:22
virtual ~HttpService()
Destructor.
HTTP service responder.
Definition: Responder.h:50
virtual Http::Responder * onGetResponder(const Http::Request &request)
Creates a responder to handle request received by a server.
virtual void onReleaseResponder(Http::Responder *resp)
Destroys a responder created by a server.
HttpService(Remoting::ServiceDefinition &serviceDef, const ToolDeclaration &decl)
Constructs with service definition and tool declaration.