14a348081030cdd2af758fddc869518357d9befd3Caroline Tice//===-- StreamBroadcast.cpp -------------------------------------*- C++ -*-===// 24a348081030cdd2af758fddc869518357d9befd3Caroline Tice// 34a348081030cdd2af758fddc869518357d9befd3Caroline Tice// The LLVM Compiler Infrastructure 44a348081030cdd2af758fddc869518357d9befd3Caroline Tice// 54a348081030cdd2af758fddc869518357d9befd3Caroline Tice// This file is distributed under the University of Illinois Open Source 64a348081030cdd2af758fddc869518357d9befd3Caroline Tice// License. See LICENSE.TXT for details. 74a348081030cdd2af758fddc869518357d9befd3Caroline Tice// 84a348081030cdd2af758fddc869518357d9befd3Caroline Tice//===----------------------------------------------------------------------===// 94a348081030cdd2af758fddc869518357d9befd3Caroline Tice 104a348081030cdd2af758fddc869518357d9befd3Caroline Tice#include <stdio.h> 114a348081030cdd2af758fddc869518357d9befd3Caroline Tice 124a348081030cdd2af758fddc869518357d9befd3Caroline Tice#include "lldb/lldb-private.h" 134a348081030cdd2af758fddc869518357d9befd3Caroline Tice#include "lldb/Core/Broadcaster.h" 144a348081030cdd2af758fddc869518357d9befd3Caroline Tice#include "lldb/Core/Event.h" 154a348081030cdd2af758fddc869518357d9befd3Caroline Tice#include "lldb/Core/StreamAsynchronousIO.h" 164a348081030cdd2af758fddc869518357d9befd3Caroline Tice 174a348081030cdd2af758fddc869518357d9befd3Caroline Ticeusing namespace lldb; 184a348081030cdd2af758fddc869518357d9befd3Caroline Ticeusing namespace lldb_private; 194a348081030cdd2af758fddc869518357d9befd3Caroline Tice 204a348081030cdd2af758fddc869518357d9befd3Caroline Tice 214a348081030cdd2af758fddc869518357d9befd3Caroline TiceStreamAsynchronousIO::StreamAsynchronousIO (Broadcaster &broadcaster, uint32_t broadcast_event_type) : 224a348081030cdd2af758fddc869518357d9befd3Caroline Tice Stream (0, 4, eByteOrderBig), 234a348081030cdd2af758fddc869518357d9befd3Caroline Tice m_broadcaster (broadcaster), 244a348081030cdd2af758fddc869518357d9befd3Caroline Tice m_broadcast_event_type (broadcast_event_type), 254a348081030cdd2af758fddc869518357d9befd3Caroline Tice m_accumulated_data () 264a348081030cdd2af758fddc869518357d9befd3Caroline Tice{ 274a348081030cdd2af758fddc869518357d9befd3Caroline Tice} 284a348081030cdd2af758fddc869518357d9befd3Caroline Tice 294a348081030cdd2af758fddc869518357d9befd3Caroline TiceStreamAsynchronousIO::~StreamAsynchronousIO () 304a348081030cdd2af758fddc869518357d9befd3Caroline Tice{ 314a348081030cdd2af758fddc869518357d9befd3Caroline Tice} 324a348081030cdd2af758fddc869518357d9befd3Caroline Tice 334a348081030cdd2af758fddc869518357d9befd3Caroline Ticevoid 344a348081030cdd2af758fddc869518357d9befd3Caroline TiceStreamAsynchronousIO::Flush () 354a348081030cdd2af758fddc869518357d9befd3Caroline Tice{ 364a348081030cdd2af758fddc869518357d9befd3Caroline Tice if (m_accumulated_data.GetSize() > 0) 374a348081030cdd2af758fddc869518357d9befd3Caroline Tice { 38102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<EventDataBytes> data_bytes_ap (new EventDataBytes); 394a348081030cdd2af758fddc869518357d9befd3Caroline Tice // Let's swap the bytes to avoid LARGE string copies. 404a348081030cdd2af758fddc869518357d9befd3Caroline Tice data_bytes_ap->SwapBytes (m_accumulated_data.GetString()); 414a348081030cdd2af758fddc869518357d9befd3Caroline Tice EventSP new_event_sp (new Event (m_broadcast_event_type, data_bytes_ap.release())); 424a348081030cdd2af758fddc869518357d9befd3Caroline Tice m_broadcaster.BroadcastEvent (new_event_sp); 434a348081030cdd2af758fddc869518357d9befd3Caroline Tice m_accumulated_data.Clear(); 444a348081030cdd2af758fddc869518357d9befd3Caroline Tice } 454a348081030cdd2af758fddc869518357d9befd3Caroline Tice} 464a348081030cdd2af758fddc869518357d9befd3Caroline Tice 4736da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Claytonsize_t 484a348081030cdd2af758fddc869518357d9befd3Caroline TiceStreamAsynchronousIO::Write (const void *s, size_t length) 494a348081030cdd2af758fddc869518357d9befd3Caroline Tice{ 504a348081030cdd2af758fddc869518357d9befd3Caroline Tice m_accumulated_data.Write (s, length); 514a348081030cdd2af758fddc869518357d9befd3Caroline Tice return length; 524a348081030cdd2af758fddc869518357d9befd3Caroline Tice} 53