OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
13 // limitations under the License. | 13 // limitations under the License. |
14 | 14 |
15 #ifndef CRASHPAD_UTIL_MACH_CHILD_PORT_SERVER_H_ | 15 #ifndef CRASHPAD_UTIL_MACH_CHILD_PORT_SERVER_H_ |
16 #define CRASHPAD_UTIL_MACH_CHILD_PORT_SERVER_H_ | 16 #define CRASHPAD_UTIL_MACH_CHILD_PORT_SERVER_H_ |
17 | 17 |
18 #include <mach/mach.h> | 18 #include <mach/mach.h> |
19 | 19 |
| 20 #include <set> |
| 21 |
20 #include "base/basictypes.h" | 22 #include "base/basictypes.h" |
21 #include "util/mach/child_port_types.h" | 23 #include "util/mach/child_port_types.h" |
22 #include "util/mach/mach_message_server.h" | 24 #include "util/mach/mach_message_server.h" |
23 | 25 |
24 namespace crashpad { | 26 namespace crashpad { |
25 | 27 |
26 //! \brief A server interface for the `child_port` Mach subsystem. | 28 //! \brief A server interface for the `child_port` Mach subsystem. |
27 class ChildPortServer : public MachMessageServer::Interface { | 29 class ChildPortServer : public MachMessageServer::Interface { |
28 public: | 30 public: |
29 //! \brief An interface that the request message that is a part of the | 31 //! \brief An interface that the request message that is a part of the |
30 //! `child_port` Mach subsystem can be dispatched to. | 32 //! `child_port` Mach subsystem can be dispatched to. |
31 class Interface { | 33 class Interface { |
32 public: | 34 public: |
33 //! \brief Handles check-ins sent by `child_port_check_in()`. | 35 //! \brief Handles check-ins sent by `child_port_check_in()`. |
34 //! | 36 //! |
35 //! This behaves equivalently to a `handle_child_port_check_in()` function | 37 //! This behaves equivalently to a `handle_child_port_check_in()` function |
36 //! used with `child_port_server()`. | 38 //! used with `child_port_server()`. |
37 //! | 39 //! |
38 //! \param[in] trailer The trailer received with the request message. | 40 //! \param[in] trailer The trailer received with the request message. |
39 //! \param[out] destroy_request `true` if the request message is to be | 41 //! \param[out] destroy_request `true` if the request message is to be |
40 //! destroyed even when this method returns success. See | 42 //! destroyed even when this method returns success. See |
41 //! MachMessageServer::Interface. | 43 //! MachMessageServer::Interface. |
42 virtual kern_return_t HandleChildPortCheckIn( | 44 virtual kern_return_t HandleChildPortCheckIn( |
43 child_port_server_t server, | 45 child_port_server_t server, |
44 const child_port_token_t token, | 46 const child_port_token_t token, |
45 mach_port_t port, | 47 mach_port_t port, |
46 mach_msg_type_name_t right_type, | 48 mach_msg_type_name_t right_type, |
47 const mach_msg_trailer_t* trailer, | 49 const mach_msg_trailer_t* trailer, |
48 bool* destroy_complex_request) = 0; | 50 bool* destroy_request) = 0; |
49 | 51 |
50 protected: | 52 protected: |
51 ~Interface() {} | 53 ~Interface() {} |
52 }; | 54 }; |
53 | 55 |
54 //! \brief Constructs an object of this class. | 56 //! \brief Constructs an object of this class. |
55 //! | 57 //! |
56 //! \param[in] interface The interface to dispatch requests to. Weak. | 58 //! \param[in] interface The interface to dispatch requests to. Weak. |
57 explicit ChildPortServer(Interface* interface); | 59 explicit ChildPortServer(Interface* interface); |
58 | 60 |
(...skipping 10 matching lines...) Expand all Loading... |
69 | 71 |
70 private: | 72 private: |
71 Interface* interface_; // weak | 73 Interface* interface_; // weak |
72 | 74 |
73 DISALLOW_COPY_AND_ASSIGN(ChildPortServer); | 75 DISALLOW_COPY_AND_ASSIGN(ChildPortServer); |
74 }; | 76 }; |
75 | 77 |
76 } // namespace crashpad | 78 } // namespace crashpad |
77 | 79 |
78 #endif // CRASHPAD_UTIL_MACH_CHILD_PORT_SERVER_H_ | 80 #endif // CRASHPAD_UTIL_MACH_CHILD_PORT_SERVER_H_ |
OLD | NEW |