Crashpad
Classes | Public Member Functions | List of all members
crashpad::ExceptionHandlerServer Class Reference

Runs the main exception-handling server in Crashpad’s handler process. More...

#include "util/win/exception_handler_server.h"

Classes

class  Delegate
 

Public Member Functions

 ExceptionHandlerServer (base::mac::ScopedMachReceiveRight receive_port, bool launchd)
 Constructs an ExceptionHandlerServer object. More...
 
void Run (UniversalMachExcServer::Interface *exception_interface)
 Runs the exception-handling server. More...
 
void Stop ()
 Stops a running exception-handling server. More...
 
 ExceptionHandlerServer (bool persistent)
 Constructs the exception handling server. More...
 
void SetPipeName (const std::wstring &pipe_name)
 Sets the pipe name to listen for client registrations on. More...
 
std::wstring CreatePipe ()
 Creates a randomized pipe name to listen for client registrations on and returns its name. More...
 
void Run (Delegate *delegate)
 Runs the exception-handling server. More...
 
void Stop ()
 Stops the exception-handling server. Returns immediately. The object must not be destroyed until Run() returns.
 

Detailed Description

Runs the main exception-handling server in Crashpad’s handler process.

Runs the main exception-handling server in Crashpad's handler process.

Constructor & Destructor Documentation

crashpad::ExceptionHandlerServer::ExceptionHandlerServer ( base::mac::ScopedMachReceiveRight  receive_port,
bool  launchd 
)

Constructs an ExceptionHandlerServer object.

Parameters
[in]receive_portThe port that exception messages and no-senders notifications will be received on.
[in]launchdIf true, the exception handler is being run from launchd. receive_port is not monitored for no-senders notifications, and instead, Stop() must be called to provide a “quit” signal.
crashpad::ExceptionHandlerServer::ExceptionHandlerServer ( bool  persistent)
explicit

Constructs the exception handling server.

Parameters
[in]persistenttrue if Run() should not return until Stop() is called. If false, Run() will return when all clients have exited, although Run() will always wait for the first client to connect.

Member Function Documentation

std::wstring crashpad::ExceptionHandlerServer::CreatePipe ( )

Creates a randomized pipe name to listen for client registrations on and returns its name.

Either this method or CreatePipe(), but not both, must be called before Run().

Returns
The pipe name that will be listened on.
void crashpad::ExceptionHandlerServer::Run ( UniversalMachExcServer::Interface exception_interface)

Runs the exception-handling server.

Parameters
[in]exception_interfaceAn object to send exception messages to.

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 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 exception_interface.

This method must only be called once on an ExceptionHandlerServer object.

If an unexpected condition that prevents this method from functioning is encountered, it will log a message and terminate execution. Receipt of an invalid message on the receive port will cause a message to be logged, but this method will continue running normally.

void crashpad::ExceptionHandlerServer::Run ( Delegate delegate)

Runs the exception-handling server.

Parameters
[in]delegateThe interface to which the exceptions are delegated when they are caught in Run(). Ownership is not transferred.
void crashpad::ExceptionHandlerServer::SetPipeName ( const std::wstring &  pipe_name)

Sets the pipe name to listen for client registrations on.

Either this method or CreatePipe(), but not both, must be called before Run().

Parameters
[in]pipe_nameThe name of the pipe to listen on. Must be of the form "\\.\pipe\<some_name>".
void crashpad::ExceptionHandlerServer::Stop ( )

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.


The documentation for this class was generated from the following files: