Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Side by Side Diff: util/win/exception_handler_server.h

Issue 1301853002: win: Crash handler server (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: fixes and move some things around Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Crashpad Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (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
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #ifndef CRASHPAD_UTIL_WIN_EXCEPTION_HANDLER_SERVER_H_
16 #define CRASHPAD_UTIL_WIN_EXCEPTION_HANDLER_SERVER_H_
17
18 #include <map>
19 #include <set>
20 #include <string>
21
22 #include "base/basictypes.h"
23 #include "base/synchronization/lock.h"
24 #include "util/win/address_types.h"
25 #include "util/win/scoped_handle.h"
26
27 namespace crashpad {
28
29 namespace internal {
30 class ClientData;
31 } // namespace internal
32
33 //! \brief Runs the main exception-handling server in Crashpad's handler
34 //! process.
35 class ExceptionHandlerServer {
36 public:
37 class Delegate {
38 public:
39 virtual ~Delegate();
40
41 virtual void OnStarted() = 0;
Mark Mentovai 2015/08/26 21:40:28 I like to name interface methods according to thei
scottmg 2015/08/27 01:04:38 Done.
42 virtual void OnException(HANDLE process,
43 WinVMAddress exception_information_address) = 0;
44 virtual void OnShutdown() = 0;
45 };
46
47 //! \brief Constructs the exception handling server.
48 //!
49 //! \param[in] delegate The interface to which the exceptions are delegated
50 //! when they are caught in Run(). Ownership is not transferred and it
51 //! must outlive this object.
52 explicit ExceptionHandlerServer(Delegate* delegate);
53 ~ExceptionHandlerServer();
54
55 //! \brief Runs the exception-handling server.
56 //!
57 //! \param[in] pipe_name The name of the pipe to listen on. Must be of the
58 //! form "\\.\pipe\<some_name>".
59 void Run(const std::string& pipe_name);
60
61 //! \brief Stops the exception-handling server. Returns immediately. The
62 //! object must not be destroyed until Run() returns.
63 void Stop();
64
65 private:
66 static DWORD __stdcall PipeServiceProc(void* ctx);
67 static void __stdcall OnDumpEvent(void* ctx, BOOLEAN);
68 static void __stdcall OnProcessEnd(void* ctx, BOOLEAN);
69
70 Delegate* delegate_; // Weak.
71 ScopedKernelHANDLE port_;
72
73 base::Lock clients_lock_;
74 std::set<internal::ClientData*> clients_;
75
76 DISALLOW_COPY_AND_ASSIGN(ExceptionHandlerServer);
77 };
78
79 } // namespace crashpad
80
81 #endif // CRASHPAD_UTIL_WIN_EXCEPTION_HANDLER_SERVER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698