Add mechanizm for caching local and peer addresses in AsyncSSLSocket.
[folly.git] / folly / SafeAssert.cpp
1 /*
2  * Copyright 2015 Facebook, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <folly/SafeAssert.h>
18
19 #include <folly/Conv.h>
20 #include <folly/FileUtil.h>
21
22 namespace folly { namespace detail {
23
24 namespace {
25 void writeStderr(const char* s) {
26   writeFull(STDERR_FILENO, s, strlen(s));
27 }
28 }  // namespace
29
30 void assertionFailure(const char* expr, const char* msg, const char* file,
31                       unsigned int line, const char* function) {
32   writeStderr("\n\nAssertion failure: ");
33   writeStderr(expr);
34   writeStderr("\nMessage: ");
35   writeStderr(msg);
36   writeStderr("\nFile: ");
37   writeStderr(file);
38   writeStderr("\nLine: ");
39   char buf[20];
40   uint32_t n = uint64ToBufferUnsafe(line, buf);
41   writeFull(STDERR_FILENO, buf, n);
42   writeStderr("\nFunction: ");
43   writeStderr(function);
44   writeStderr("\n");
45   fsyncNoInt(STDERR_FILENO);
46   abort();
47 }
48
49 }}  // namespaces