Debugger: Further additions to TargetHostInterface.
TargetHostInterface: - Provide interface for tracking list of TeamDebuggers attached to this particular interface instance. Will eventually replace the current mechanism where the Debugger app tracks this directly. LocalTargetHostInterface: - Cleanups.
This commit is contained in:
parent
0421aa8cbe
commit
7442abd1c5
|
@ -5,8 +5,16 @@
|
|||
|
||||
#include "TargetHostInterface.h"
|
||||
|
||||
#include "TeamDebugger.h"
|
||||
|
||||
|
||||
TargetHostInterface::TargetHostInterface()
|
||||
:
|
||||
BReferenceable(),
|
||||
fTeamDebuggers(20, false)
|
||||
{
|
||||
}
|
||||
|
||||
// #pragma mark - TargetHostInterface
|
||||
|
||||
TargetHostInterface::~TargetHostInterface()
|
||||
{
|
||||
|
@ -18,3 +26,64 @@ TargetHostInterface::SetName(const BString& name)
|
|||
{
|
||||
fName = name;
|
||||
}
|
||||
|
||||
|
||||
int32
|
||||
TargetHostInterface::CountTeamDebuggers() const
|
||||
{
|
||||
return fTeamDebuggers.CountItems();
|
||||
}
|
||||
|
||||
|
||||
TeamDebugger*
|
||||
TargetHostInterface::TeamDebuggerAt(int32 index) const
|
||||
{
|
||||
return fTeamDebuggers.ItemAt(index);
|
||||
}
|
||||
|
||||
|
||||
TeamDebugger*
|
||||
TargetHostInterface::FindTeamDebugger(team_id team) const
|
||||
{
|
||||
return fTeamDebuggers.BinarySearchByKey(team, &_FindDebuggerByKey);
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
TargetHostInterface::AddTeamDebugger(TeamDebugger* debugger)
|
||||
{
|
||||
if (!fTeamDebuggers.BinaryInsert(debugger, &_CompareDebuggers))
|
||||
return B_NO_MEMORY;
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
TargetHostInterface::RemoveTeamDebugger(TeamDebugger* debugger)
|
||||
{
|
||||
int32 index = fTeamDebuggers.BinarySearchIndexByKey(debugger->TeamID(),
|
||||
&_FindDebuggerByKey);
|
||||
if (index >= 0)
|
||||
fTeamDebuggers.RemoveItemAt(index);
|
||||
}
|
||||
|
||||
|
||||
/*static*/ int
|
||||
TargetHostInterface::_CompareDebuggers(const TeamDebugger* a,
|
||||
const TeamDebugger* b)
|
||||
{
|
||||
return a->TeamID() < b->TeamID() ? -1 : 1;
|
||||
}
|
||||
|
||||
|
||||
/*static*/ int
|
||||
TargetHostInterface::_FindDebuggerByKey(const team_id* team,
|
||||
const TeamDebugger* debugger)
|
||||
{
|
||||
if (*team < debugger->TeamID())
|
||||
return -1;
|
||||
else if (*team > debugger->TeamID())
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -8,23 +8,33 @@
|
|||
#include <OS.h>
|
||||
#include <String.h>
|
||||
|
||||
#include <ObjectList.h>
|
||||
#include <Referenceable.h>
|
||||
|
||||
|
||||
class DebuggerInterface;
|
||||
class TargetHost;
|
||||
class TeamDebugger;
|
||||
|
||||
|
||||
class TargetHostInterface : public BReferenceable {
|
||||
public:
|
||||
TargetHostInterface();
|
||||
virtual ~TargetHostInterface();
|
||||
|
||||
virtual status_t Init() = 0;
|
||||
virtual void Close() = 0;
|
||||
|
||||
const BString& Name() const { return fName; }
|
||||
void SetName(const BString& name);
|
||||
|
||||
|
||||
int32 CountTeamDebuggers() const;
|
||||
TeamDebugger* TeamDebuggerAt(int32 index) const;
|
||||
TeamDebugger* FindTeamDebugger(team_id team) const;
|
||||
status_t AddTeamDebugger(TeamDebugger* debugger);
|
||||
void RemoveTeamDebugger(TeamDebugger* debugger);
|
||||
|
||||
virtual status_t Init() = 0;
|
||||
virtual void Close() = 0;
|
||||
|
||||
virtual bool Connected() const = 0;
|
||||
|
||||
virtual TargetHost* GetTargetHost() = 0;
|
||||
|
@ -36,8 +46,17 @@ public:
|
|||
const char* const* arguments,
|
||||
DebuggerInterface*& _interface) = 0;
|
||||
|
||||
private:
|
||||
static int _CompareDebuggers(const TeamDebugger* a,
|
||||
const TeamDebugger* b);
|
||||
static int _FindDebuggerByKey(const team_id* team,
|
||||
const TeamDebugger* debugger);
|
||||
private:
|
||||
typedef BObjectList<TeamDebugger> TeamDebuggerList;
|
||||
|
||||
private:
|
||||
BString fName;
|
||||
TeamDebuggerList fTeamDebuggers;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <image.h>
|
||||
|
||||
#include <AutoLocker.h>
|
||||
#include <system_info.h>
|
||||
#include <util/KMessage.h>
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
|
||||
#include "TargetHostInterface.h"
|
||||
|
||||
#include <Looper.h>
|
||||
|
||||
|
||||
class LocalTargetHostInterface : public TargetHostInterface {
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue