| //===-- StreamBroadcast.cpp -------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include <stdio.h> |
| |
| #include "lldb/lldb-private.h" |
| #include "lldb/Core/Broadcaster.h" |
| #include "lldb/Core/Event.h" |
| #include "lldb/Core/StreamAsynchronousIO.h" |
| |
| using namespace lldb; |
| using namespace lldb_private; |
| |
| |
| StreamAsynchronousIO::StreamAsynchronousIO (Broadcaster &broadcaster, uint32_t broadcast_event_type) : |
| Stream (0, 4, eByteOrderBig), |
| m_broadcaster (broadcaster), |
| m_broadcast_event_type (broadcast_event_type), |
| m_accumulated_data () |
| { |
| } |
| |
| StreamAsynchronousIO::~StreamAsynchronousIO () |
| { |
| } |
| |
| void |
| StreamAsynchronousIO::Flush () |
| { |
| if (m_accumulated_data.GetSize() > 0) |
| { |
| std::unique_ptr<EventDataBytes> data_bytes_ap (new EventDataBytes); |
| // Let's swap the bytes to avoid LARGE string copies. |
| data_bytes_ap->SwapBytes (m_accumulated_data.GetString()); |
| EventSP new_event_sp (new Event (m_broadcast_event_type, data_bytes_ap.release())); |
| m_broadcaster.BroadcastEvent (new_event_sp); |
| m_accumulated_data.Clear(); |
| } |
| } |
| |
| size_t |
| StreamAsynchronousIO::Write (const void *s, size_t length) |
| { |
| m_accumulated_data.Write (s, length); |
| return length; |
| } |