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