| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "garnet/lib/overnet/environment/trace.h" |
| |
| namespace overnet { |
| |
| class NullTrace final : public TraceRenderer { |
| public: |
| void Render(TraceOutput output) override {} |
| void NoteParentChild(Op, Op) override {} |
| }; |
| |
| static NullTrace null_trace; |
| |
| thread_local Scopes g_trace_scopes; |
| thread_local Op ScopedOp::current_ = Op::Invalid(); |
| thread_local Severity ScopedSeverity::current_ = Severity::DEBUG; |
| thread_local TraceRenderer* ScopedRenderer::current_ = &null_trace; |
| |
| std::ostream& operator<<(std::ostream& out, Module module) { |
| switch (module) { |
| case Module::MODULE_COUNT: |
| return out << "<<ERROR>>"; |
| case Module::NUB: |
| return out << "nub"; |
| case Module::PACKET_LINK: |
| return out << "packet_link"; |
| case Module::DATAGRAM_STREAM: |
| return out << "dg_stream"; |
| case Module::DATAGRAM_STREAM_SEND_OP: |
| return out << "send_op"; |
| case Module::DATAGRAM_STREAM_RECV_OP: |
| return out << "recv_op"; |
| case Module::DATAGRAM_STREAM_INCOMING_MESSAGE: |
| return out << "inc_msg"; |
| case Module::PACKET_PROTOCOL: |
| return out << "packet_protocol"; |
| case Module::BBR: |
| return out << "bbr"; |
| case Module::ROUTER: |
| return out << "router"; |
| } |
| } |
| |
| std::ostream& operator<<(std::ostream& out, OpType type) { |
| switch (type) { |
| case OpType::INVALID: |
| return out << "INVALID"; |
| case OpType::INCOMING_PACKET: |
| return out << "IncomingPacket"; |
| case OpType::OUTGOING_REQUEST: |
| return out << "OutgoingRequest"; |
| case OpType::LINEARIZER_INTEGRATION: |
| return out << "LinearizerIntegration"; |
| } |
| } |
| |
| std::ostream& operator<<(std::ostream& out, Op op) { |
| return out << op.type() << "#" << op.somewhat_unique_id(); |
| } |
| |
| } // namespace overnet |