1*969ed3d1SCaroline Tice //===-- StreamBroadcast.cpp -------------------------------------*- C++ -*-===// 2*969ed3d1SCaroline Tice // 3*969ed3d1SCaroline Tice // The LLVM Compiler Infrastructure 4*969ed3d1SCaroline Tice // 5*969ed3d1SCaroline Tice // This file is distributed under the University of Illinois Open Source 6*969ed3d1SCaroline Tice // License. See LICENSE.TXT for details. 7*969ed3d1SCaroline Tice // 8*969ed3d1SCaroline Tice //===----------------------------------------------------------------------===// 9*969ed3d1SCaroline Tice 10*969ed3d1SCaroline Tice #include <stdio.h> 11*969ed3d1SCaroline Tice 12*969ed3d1SCaroline Tice #include "lldb/lldb-private.h" 13*969ed3d1SCaroline Tice #include "lldb/Core/Broadcaster.h" 14*969ed3d1SCaroline Tice #include "lldb/Core/Event.h" 15*969ed3d1SCaroline Tice #include "lldb/Core/StreamAsynchronousIO.h" 16*969ed3d1SCaroline Tice 17*969ed3d1SCaroline Tice using namespace lldb; 18*969ed3d1SCaroline Tice using namespace lldb_private; 19*969ed3d1SCaroline Tice 20*969ed3d1SCaroline Tice 21*969ed3d1SCaroline Tice StreamAsynchronousIO::StreamAsynchronousIO (Broadcaster &broadcaster, uint32_t broadcast_event_type) : 22*969ed3d1SCaroline Tice Stream (0, 4, eByteOrderBig), 23*969ed3d1SCaroline Tice m_broadcaster (broadcaster), 24*969ed3d1SCaroline Tice m_broadcast_event_type (broadcast_event_type), 25*969ed3d1SCaroline Tice m_accumulated_data () 26*969ed3d1SCaroline Tice { 27*969ed3d1SCaroline Tice } 28*969ed3d1SCaroline Tice 29*969ed3d1SCaroline Tice StreamAsynchronousIO::~StreamAsynchronousIO () 30*969ed3d1SCaroline Tice { 31*969ed3d1SCaroline Tice } 32*969ed3d1SCaroline Tice 33*969ed3d1SCaroline Tice void 34*969ed3d1SCaroline Tice StreamAsynchronousIO::Flush () 35*969ed3d1SCaroline Tice { 36*969ed3d1SCaroline Tice if (m_accumulated_data.GetSize() > 0) 37*969ed3d1SCaroline Tice { 38*969ed3d1SCaroline Tice std::auto_ptr<EventDataBytes> data_bytes_ap (new EventDataBytes); 39*969ed3d1SCaroline Tice // Let's swap the bytes to avoid LARGE string copies. 40*969ed3d1SCaroline Tice data_bytes_ap->SwapBytes (m_accumulated_data.GetString()); 41*969ed3d1SCaroline Tice EventSP new_event_sp (new Event (m_broadcast_event_type, data_bytes_ap.release())); 42*969ed3d1SCaroline Tice m_broadcaster.BroadcastEvent (new_event_sp); 43*969ed3d1SCaroline Tice m_accumulated_data.Clear(); 44*969ed3d1SCaroline Tice } 45*969ed3d1SCaroline Tice } 46*969ed3d1SCaroline Tice 47*969ed3d1SCaroline Tice int 48*969ed3d1SCaroline Tice StreamAsynchronousIO::Write (const void *s, size_t length) 49*969ed3d1SCaroline Tice { 50*969ed3d1SCaroline Tice m_accumulated_data.Write (s, length); 51*969ed3d1SCaroline Tice return length; 52*969ed3d1SCaroline Tice } 53