| Index: handler/mac/exception_handler_server.h
|
| diff --git a/handler/mac/exception_handler_server.h b/handler/mac/exception_handler_server.h
|
| index df9d5a0d0dcc3d5af620ef2f10692b239f203887..421038e3e53e114f4442302bf84795a8e89e1fb4 100644
|
| --- a/handler/mac/exception_handler_server.h
|
| +++ b/handler/mac/exception_handler_server.h
|
| @@ -34,8 +34,8 @@ class ExceptionHandlerServer {
|
| //! notifications will be received on.
|
| //! \param[in] launchd If `true`, the exception handler is being run from
|
| //! launchd. \a receive_port is not monitored for no-senders
|
| - //! notifications, and instead, the expected “quit” signal is receipt of
|
| - //! `SIGTERM`.
|
| + //! notifications, and instead, Stop() must be called to provide a “quit”
|
| + //! signal.
|
| ExceptionHandlerServer(base::mac::ScopedMachReceiveRight receive_port,
|
| bool launchd);
|
| ~ExceptionHandlerServer();
|
| @@ -47,11 +47,10 @@ class ExceptionHandlerServer {
|
| //! This method monitors the receive port for exception messages and, if
|
| //! not being run by launchd, no-senders notifications. It continues running
|
| //! until it has no more clients, indicated by the receipt of a no-senders
|
| - //! notification, or if being run by launchd, receipt of `SIGTERM`. When not
|
| - //! being run by launchd, it is important to assure that a send right exists
|
| - //! in a client (or has been queued by `mach_msg()` to be sent to a client)
|
| - //! prior to calling this method, or it will detect that it is sender-less and
|
| - //! return immediately.
|
| + //! notification, or until Stop() is called. When not being run by launchd, it
|
| + //! is important to assure that a send right exists in a client (or has been
|
| + //! queued by `mach_msg()` to be sent to a client) prior to calling this
|
| + //! method, or it will detect that it is sender-less and return immediately.
|
| //!
|
| //! All exception messages will be passed to \a exception_interface.
|
| //!
|
| @@ -63,8 +62,19 @@ class ExceptionHandlerServer {
|
| //! this method will continue running normally.
|
| void Run(UniversalMachExcServer::Interface* exception_interface);
|
|
|
| + //! \brief Stops a running exception-handling server.
|
| + //!
|
| + //! The normal mode of operation is to call Stop() while Run() is running. It
|
| + //! is expected that Stop() would be called from a signal handler.
|
| + //!
|
| + //! If Stop() is called before Run() it will cause Run() to return as soon as
|
| + //! it is called. It is harmless to call Stop() after Run() has already
|
| + //! returned, or to call Stop() after it has already been called.
|
| + void Stop();
|
| +
|
| private:
|
| base::mac::ScopedMachReceiveRight receive_port_;
|
| + base::mac::ScopedMachReceiveRight notify_port_;
|
| bool launchd_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ExceptionHandlerServer);
|
|
|