ns3::FatalImpl::RegisterStream(), ns3::FatalImpl::UnregisterStream(), and ns3::FatalImpl::FlushStreams() implementations; see Implementation note! More...
#include "fatal-impl.h"#include "log.h"#include <csignal>#include <cstdio>#include <cstdlib>#include <iostream>#include <list>
Include dependency graph for fatal-impl.cc:Go to the source code of this file.
Namespaces | |
| namespace | ns3 |
| Every class exported by the ns3 library is enclosed in the ns3 namespace. | |
| namespace | ns3::FatalImpl |
| Implementation namespace for fatal error handlers. | |
| namespace | ns3::FatalImpl::anonymous_namespace{fatal-impl.cc} |
| Unnamed namespace for fatal streams memory implementation and signal handler. | |
Functions | |
| void | ns3::FatalImpl::FlushStreams () |
| Flush all currently registered streams. | |
| std::list< std::ostream * > * | ns3::FatalImpl::anonymous_namespace{fatal-impl.cc}::GetStreamList () |
| Get the stream list, initializing it if necessary. | |
| std::list< std::ostream * > ** | ns3::FatalImpl::anonymous_namespace{fatal-impl.cc}::PeekStreamList () |
| Static variable pointing to the list of output streams to be flushed on fatal errors. | |
| void | ns3::FatalImpl::RegisterStream (std::ostream *stream) |
| Register a stream to be flushed on abnormal exit. | |
| void | ns3::FatalImpl::anonymous_namespace{fatal-impl.cc}::sigHandler (int sig) |
| Overrides normal SIGSEGV handler once the HandleTerminate function is run. | |
| void | ns3::FatalImpl::UnregisterStream (std::ostream *stream) |
| Unregister a stream for flushing on abnormal exit. | |
ns3::FatalImpl::RegisterStream(), ns3::FatalImpl::UnregisterStream(), and ns3::FatalImpl::FlushStreams() implementations; see Implementation note!
The singleton pattern we use here is tricky because we have to ensure:
main() enters and before any constructor run in this file.new is deleted properly before program exit.This is why we go through all the painful hoops below.
Definition in file fatal-impl.cc.