1315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// Copyright (c) 2010 Google Inc. 2315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// All rights reserved. 3315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// 4315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// Redistribution and use in source and binary forms, with or without 5315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// modification, are permitted provided that the following conditions are 6315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// met: 7315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// 8315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// * Redistributions of source code must retain the above copyright 9315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// notice, this list of conditions and the following disclaimer. 10315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// * Redistributions in binary form must reproduce the above 11315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// copyright notice, this list of conditions and the following disclaimer 12315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// in the documentation and/or other materials provided with the 13315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// distribution. 14315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// * Neither the name of Google Inc. nor the names of its 15315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// contributors may be used to endorse or promote products derived from 16315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// this software without specific prior written permission. 17315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// 18315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 30315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com#ifndef GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_ 31315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com#define GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_ 32315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 33315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com#include "common/mac/MachIPC.h" 34315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 35315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.comnamespace google_breakpad { 36315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 37315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.comclass CrashGenerationClient { 38315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com public: 39315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com explicit CrashGenerationClient(const char* mach_port_name) 40315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com : sender_(mach_port_name) { 41315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com } 42315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 43315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com // Request the crash server to generate a dump. 44315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com // 45315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com // Return true if the dump was successful; false otherwise. 46315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com bool RequestDumpForException(int exception_type, 47315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com int exception_code, 48315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com int exception_subcode, 49315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com mach_port_t crashing_thread); 50315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 51315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com bool RequestDump() { 52315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com return RequestDumpForException(0, 0, 0, MACH_PORT_NULL); 53315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com } 54315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 55315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com private: 56315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com MachPortSender sender_; 57315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 58315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com // Prevent copy construction and assignment. 59315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com CrashGenerationClient(const CrashGenerationClient&); 60315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com CrashGenerationClient& operator=(const CrashGenerationClient&); 61315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com}; 62315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 63315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com} // namespace google_breakpad 64315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com 65315fd78199bc606ee02cb085dacadd58e0fc40c8ted.mielczarek@gmail.com#endif // GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_ 66