xref: /aosp_15_r20/external/cronet/base/apple/osstatus_logging.mm (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker// Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker// found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker#include "base/apple/osstatus_logging.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker#import <Foundation/Foundation.h>
8*6777b538SAndroid Build Coastguard Worker
9*6777b538SAndroid Build Coastguard Worker#include <iomanip>
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard Worker#include "base/immediate_crash.h"
12*6777b538SAndroid Build Coastguard Worker
13*6777b538SAndroid Build Coastguard Workernamespace logging {
14*6777b538SAndroid Build Coastguard Worker
15*6777b538SAndroid Build Coastguard Workerstd::string DescriptionFromOSStatus(OSStatus err) {
16*6777b538SAndroid Build Coastguard Worker  NSError* error = [NSError errorWithDomain:NSOSStatusErrorDomain
17*6777b538SAndroid Build Coastguard Worker                                       code:err
18*6777b538SAndroid Build Coastguard Worker                                   userInfo:nil];
19*6777b538SAndroid Build Coastguard Worker  return error.description.UTF8String;
20*6777b538SAndroid Build Coastguard Worker}
21*6777b538SAndroid Build Coastguard Worker
22*6777b538SAndroid Build Coastguard WorkerOSStatusLogMessage::OSStatusLogMessage(const char* file_path,
23*6777b538SAndroid Build Coastguard Worker                                       int line,
24*6777b538SAndroid Build Coastguard Worker                                       LogSeverity severity,
25*6777b538SAndroid Build Coastguard Worker                                       OSStatus status)
26*6777b538SAndroid Build Coastguard Worker    : LogMessage(file_path, line, severity), status_(status) {}
27*6777b538SAndroid Build Coastguard Worker
28*6777b538SAndroid Build Coastguard WorkerOSStatusLogMessage::~OSStatusLogMessage() {
29*6777b538SAndroid Build Coastguard Worker  AppendError();
30*6777b538SAndroid Build Coastguard Worker}
31*6777b538SAndroid Build Coastguard Worker
32*6777b538SAndroid Build Coastguard Workervoid OSStatusLogMessage::AppendError() {
33*6777b538SAndroid Build Coastguard Worker  stream() << ": " << DescriptionFromOSStatus(status_) << " (" << status_
34*6777b538SAndroid Build Coastguard Worker           << ")";
35*6777b538SAndroid Build Coastguard Worker}
36*6777b538SAndroid Build Coastguard Worker
37*6777b538SAndroid Build Coastguard WorkerOSStatusLogMessageFatal::~OSStatusLogMessageFatal() {
38*6777b538SAndroid Build Coastguard Worker  AppendError();
39*6777b538SAndroid Build Coastguard Worker  Flush();
40*6777b538SAndroid Build Coastguard Worker  base::ImmediateCrash();
41*6777b538SAndroid Build Coastguard Worker}
42*6777b538SAndroid Build Coastguard Worker
43*6777b538SAndroid Build Coastguard Worker}  // namespace logging
44