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 "TargetHostInterface.h"
|
||||||
|
|
||||||
|
#include "TeamDebugger.h"
|
||||||
|
|
||||||
|
|
||||||
|
TargetHostInterface::TargetHostInterface()
|
||||||
|
:
|
||||||
|
BReferenceable(),
|
||||||
|
fTeamDebuggers(20, false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
// #pragma mark - TargetHostInterface
|
|
||||||
|
|
||||||
TargetHostInterface::~TargetHostInterface()
|
TargetHostInterface::~TargetHostInterface()
|
||||||
{
|
{
|
||||||
|
@ -18,3 +26,64 @@ TargetHostInterface::SetName(const BString& name)
|
||||||
{
|
{
|
||||||
fName = 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 <OS.h>
|
||||||
#include <String.h>
|
#include <String.h>
|
||||||
|
|
||||||
|
#include <ObjectList.h>
|
||||||
#include <Referenceable.h>
|
#include <Referenceable.h>
|
||||||
|
|
||||||
|
|
||||||
class DebuggerInterface;
|
class DebuggerInterface;
|
||||||
class TargetHost;
|
class TargetHost;
|
||||||
|
class TeamDebugger;
|
||||||
|
|
||||||
|
|
||||||
class TargetHostInterface : public BReferenceable {
|
class TargetHostInterface : public BReferenceable {
|
||||||
public:
|
public:
|
||||||
|
TargetHostInterface();
|
||||||
virtual ~TargetHostInterface();
|
virtual ~TargetHostInterface();
|
||||||
|
|
||||||
virtual status_t Init() = 0;
|
|
||||||
virtual void Close() = 0;
|
|
||||||
|
|
||||||
const BString& Name() const { return fName; }
|
const BString& Name() const { return fName; }
|
||||||
void SetName(const BString& name);
|
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 bool Connected() const = 0;
|
||||||
|
|
||||||
virtual TargetHost* GetTargetHost() = 0;
|
virtual TargetHost* GetTargetHost() = 0;
|
||||||
|
@ -36,8 +46,17 @@ public:
|
||||||
const char* const* arguments,
|
const char* const* arguments,
|
||||||
DebuggerInterface*& _interface) = 0;
|
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:
|
private:
|
||||||
BString fName;
|
BString fName;
|
||||||
|
TeamDebuggerList fTeamDebuggers;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <image.h>
|
||||||
|
|
||||||
#include <AutoLocker.h>
|
#include <AutoLocker.h>
|
||||||
#include <system_info.h>
|
#include <system_info.h>
|
||||||
#include <util/KMessage.h>
|
#include <util/KMessage.h>
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
|
|
||||||
#include "TargetHostInterface.h"
|
#include "TargetHostInterface.h"
|
||||||
|
|
||||||
#include <Looper.h>
|
|
||||||
|
|
||||||
|
|
||||||
class LocalTargetHostInterface : public TargetHostInterface {
|
class LocalTargetHostInterface : public TargetHostInterface {
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in New Issue