More reverting of the EOF stuff as the API was changed which we don't want to

do. Closing on EOF is an option that can be set on the 
lldb_private::Communication or the lldb::SBCommunication objects after they
are created. Of course the EOF support isn't hooked up, so they don't do 
anything at the moment, but they are left in so when the code is fixed, it 
will be easy to get working again.

llvm-svn: 120885
This commit is contained in:
Greg Clayton 2010-12-04 02:39:47 +00:00
parent f3eb96fccf
commit d46c87a1a8
8 changed files with 45 additions and 18 deletions

View File

@ -30,7 +30,7 @@ public:
typedef void (*ReadThreadBytesReceived) (void *baton, const void *src, size_t src_len);
SBCommunication ();
SBCommunication (const char * broadcaster_name, bool close_on_eof);
SBCommunication (const char * broadcaster_name);
~SBCommunication ();
@ -58,6 +58,12 @@ public:
bool
IsConnected () const;
bool
GetCloseOnEOF ();
void
SetCloseOnEOF (bool b);
size_t
Read (void *dst,
size_t dst_len,

View File

@ -109,7 +109,7 @@ public:
/// broadcaster name can be updated after the connect function
/// is called.
//------------------------------------------------------------------
Communication(const char * broadcaster_name, bool close_on_eof);
Communication(const char * broadcaster_name);
//------------------------------------------------------------------
/// Destructor.
@ -334,14 +334,24 @@ public:
static const char *
ConnectionStatusAsCString (lldb::ConnectionStatus status);
bool
GetCloseOnEOF () const
{
return m_close_on_eof;
}
void
SetCloseOnEOF (bool b)
{
m_close_on_eof = b;
}
private:
//------------------------------------------------------------------
// For Communication only
//------------------------------------------------------------------
DISALLOW_COPY_AND_ASSIGN (Communication);
bool
CloseOnEOF ();
protected:
std::auto_ptr<Connection> m_connection_ap; ///< The connection that is current in use by this communications class.

View File

@ -24,8 +24,8 @@ SBCommunication::SBCommunication() :
{
}
SBCommunication::SBCommunication(const char * broadcaster_name, bool close_on_eof) :
m_opaque (new Communication (broadcaster_name, close_on_eof)),
SBCommunication::SBCommunication(const char * broadcaster_name) :
m_opaque (new Communication (broadcaster_name)),
m_opaque_owned (true)
{
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
@ -43,6 +43,21 @@ SBCommunication::~SBCommunication()
m_opaque_owned = false;
}
bool
SBCommunication::GetCloseOnEOF ()
{
if (m_opaque)
return m_opaque->GetCloseOnEOF ();
return false;
}
void
SBCommunication::SetCloseOnEOF (bool b)
{
if (m_opaque)
m_opaque->SetCloseOnEOF (b);
}
ConnectionStatus
SBCommunication::CheckIfBytesAvailable ()
{

View File

@ -25,7 +25,7 @@ using namespace lldb_private;
//----------------------------------------------------------------------
// Constructor
//----------------------------------------------------------------------
Communication::Communication(const char *name, bool close_on_eof) :
Communication::Communication(const char *name) :
Broadcaster (name),
m_connection_ap (),
m_read_thread (LLDB_INVALID_HOST_THREAD),
@ -34,7 +34,7 @@ Communication::Communication(const char *name, bool close_on_eof) :
m_bytes_mutex (Mutex::eMutexTypeRecursive),
m_callback (NULL),
m_callback_baton (NULL),
m_close_on_eof (close_on_eof)
m_close_on_eof (true)
{
lldb_private::LogIfAnyCategoriesSet (LIBLLDB_LOG_OBJECT | LIBLLDB_LOG_COMMUNICATION,
@ -290,12 +290,6 @@ Communication::ReadFromConnection (void *dst, size_t dst_len, ConnectionStatus &
return 0;
}
bool
Communication::CloseOnEOF ()
{
return m_close_on_eof;
}
bool
Communication::ReadThreadIsRunning ()
{

View File

@ -166,7 +166,7 @@ Debugger::FindTargetWithProcessID (lldb::pid_t pid)
Debugger::Debugger () :
UserID (g_unique_id++),
DebuggerInstanceSettings (*GetSettingsController()),
m_input_comm("debugger.input", false),
m_input_comm("debugger.input"),
m_input_file (),
m_output_file (),
m_error_file (),
@ -178,6 +178,7 @@ Debugger::Debugger () :
m_input_readers (),
m_input_reader_data ()
{
m_input_comm.SetCloseOnEOF(false);
m_command_interpreter_ap->Initialize ();
}

View File

@ -32,7 +32,7 @@ using namespace lldb_private;
// GDBRemoteCommunication constructor
//----------------------------------------------------------------------
GDBRemoteCommunication::GDBRemoteCommunication() :
Communication("gdb-remote.packets", true),
Communication("gdb-remote.packets"),
m_send_acks (true),
m_rx_packet_listener ("gdbremote.rx_packet"),
m_sequence_mutex (Mutex::eMutexTypeRecursive),

View File

@ -96,7 +96,7 @@ Process::Process(Target &target, Listener &listener) :
m_addr_byte_size (0),
m_abi_sp (),
m_process_input_reader (),
m_stdio_communication ("lldb.process.stdio", true),
m_stdio_communication ("lldb.process.stdio"),
m_stdio_communication_mutex (Mutex::eMutexTypeRecursive),
m_stdout_data ()
{

View File

@ -1178,7 +1178,8 @@ Driver::MainLoop ()
// However, you don't need to do anything with the characters, since editline will dump these
// unconsumed characters after printing the prompt again in el_gets.
SBCommunication master_out_comm("driver.editline", false);
SBCommunication master_out_comm("driver.editline");
master_out_comm.SetCloseOnEOF (false);
master_out_comm.AdoptFileDesriptor(m_editline_pty.GetMasterFileDescriptor(), false);
master_out_comm.SetReadThreadBytesReceivedCallback(Driver::MasterThreadBytesReceived, this);