1969ed3d1SCaroline Tice //===-- StreamBroadcast.cpp -------------------------------------*- C++ -*-===// 2969ed3d1SCaroline Tice // 3969ed3d1SCaroline Tice // The LLVM Compiler Infrastructure 4969ed3d1SCaroline Tice // 5969ed3d1SCaroline Tice // This file is distributed under the University of Illinois Open Source 6969ed3d1SCaroline Tice // License. See LICENSE.TXT for details. 7969ed3d1SCaroline Tice // 8969ed3d1SCaroline Tice //===----------------------------------------------------------------------===// 9969ed3d1SCaroline Tice 10969ed3d1SCaroline Tice #include <stdio.h> 11969ed3d1SCaroline Tice 12969ed3d1SCaroline Tice #include "lldb/lldb-private.h" 13969ed3d1SCaroline Tice #include "lldb/Core/Broadcaster.h" 14969ed3d1SCaroline Tice #include "lldb/Core/Event.h" 15969ed3d1SCaroline Tice #include "lldb/Core/StreamAsynchronousIO.h" 16969ed3d1SCaroline Tice 17969ed3d1SCaroline Tice using namespace lldb; 18969ed3d1SCaroline Tice using namespace lldb_private; 19969ed3d1SCaroline Tice 20969ed3d1SCaroline Tice 21969ed3d1SCaroline Tice StreamAsynchronousIO::StreamAsynchronousIO (Broadcaster &broadcaster, uint32_t broadcast_event_type) : 22969ed3d1SCaroline Tice Stream (0, 4, eByteOrderBig), 23969ed3d1SCaroline Tice m_broadcaster (broadcaster), 24969ed3d1SCaroline Tice m_broadcast_event_type (broadcast_event_type), 25969ed3d1SCaroline Tice m_accumulated_data () 26969ed3d1SCaroline Tice { 27969ed3d1SCaroline Tice } 28969ed3d1SCaroline Tice 29969ed3d1SCaroline Tice StreamAsynchronousIO::~StreamAsynchronousIO () 30969ed3d1SCaroline Tice { 31969ed3d1SCaroline Tice } 32969ed3d1SCaroline Tice 33969ed3d1SCaroline Tice void 34969ed3d1SCaroline Tice StreamAsynchronousIO::Flush () 35969ed3d1SCaroline Tice { 36969ed3d1SCaroline Tice if (m_accumulated_data.GetSize() > 0) 37969ed3d1SCaroline Tice { 38969ed3d1SCaroline Tice std::auto_ptr<EventDataBytes> data_bytes_ap (new EventDataBytes); 39969ed3d1SCaroline Tice // Let's swap the bytes to avoid LARGE string copies. 40969ed3d1SCaroline Tice data_bytes_ap->SwapBytes (m_accumulated_data.GetString()); 41969ed3d1SCaroline Tice EventSP new_event_sp (new Event (m_broadcast_event_type, data_bytes_ap.release())); 42969ed3d1SCaroline Tice m_broadcaster.BroadcastEvent (new_event_sp); 43969ed3d1SCaroline Tice m_accumulated_data.Clear(); 44969ed3d1SCaroline Tice } 45969ed3d1SCaroline Tice } 46969ed3d1SCaroline Tice 47*c7bece56SGreg Clayton size_t 48969ed3d1SCaroline Tice StreamAsynchronousIO::Write (const void *s, size_t length) 49969ed3d1SCaroline Tice { 50969ed3d1SCaroline Tice m_accumulated_data.Write (s, length); 51969ed3d1SCaroline Tice return length; 52969ed3d1SCaroline Tice } 53