Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
9b8d1481
Commit
9b8d1481
authored
May 15, 2009
by
Friedemann Kleint
Browse files
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
parents
09498c59
7377a52e
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/plugins/debugger/tcfengine.cpp
View file @
9b8d1481
...
...
@@ -75,6 +75,20 @@ using namespace Debugger::Constants;
#define STRINGIFY(x) STRINGIFY_INTERNAL(x)
#define CB(callback) &TcfEngine::callback, STRINGIFY(callback)
QByteArray
C
(
const
QByteArray
&
ba1
,
const
QByteArray
&
ba2
=
QByteArray
(),
const
QByteArray
&
ba3
=
QByteArray
(),
const
QByteArray
&
ba4
=
QByteArray
(),
const
QByteArray
&
ba5
=
QByteArray
())
{
QByteArray
result
=
ba1
;
if
(
!
ba2
.
isEmpty
())
{
result
+=
'\0'
;
result
+=
ba2
;
}
if
(
!
ba3
.
isEmpty
())
{
result
+=
'\0'
;
result
+=
ba3
;
}
if
(
!
ba4
.
isEmpty
())
{
result
+=
'\0'
;
result
+=
ba4
;
}
if
(
!
ba5
.
isEmpty
())
{
result
+=
'\0'
;
result
+=
ba5
;
}
return
result
;
}
//#define USE_CONGESTION_CONTROL
...
...
@@ -159,7 +173,8 @@ void TcfEngine::socketReadyRead()
m_inbuffer
.
append
(
m_socket
->
readAll
());
int
pos
=
0
;
while
(
1
)
{
int
next
=
m_inbuffer
.
indexOf
(
"
\3\1
"
,
pos
);
// the "\3" is followed by either "\1" or "\2"
int
next
=
m_inbuffer
.
indexOf
(
"
\3
"
,
pos
);
//qDebug() << "pos: " << pos << "next: " << next;
if
(
next
==
-
1
)
break
;
...
...
@@ -191,8 +206,17 @@ void TcfEngine::socketError(QAbstractSocket::SocketError)
void
TcfEngine
::
executeDebuggerCommand
(
const
QString
&
command
)
{
Q_UNUSED
(
command
);
XSDEBUG
(
"FIXME: TcfEngine::executeDebuggerCommand()"
);
QByteArray
cmd
=
command
.
toUtf8
();
cmd
=
cmd
.
mid
(
cmd
.
indexOf
(
' '
)
+
1
);
QByteArray
null
;
null
.
append
(
'\0'
);
// FIXME: works for single-digit escapes only
cmd
.
replace
(
"
\\
0"
,
null
);
cmd
.
replace
(
"
\\
1"
,
"
\1
"
);
cmd
.
replace
(
"
\\
3"
,
"
\3
"
);
TcfCommand
tcf
;
tcf
.
command
=
cmd
;
enqueueCommand
(
tcf
);
}
void
TcfEngine
::
shutdown
()
...
...
@@ -324,6 +348,8 @@ void TcfEngine::handleResponse(const QByteArray &response)
QList
<
QByteArray
>
parts
=
response
.
split
(
'\0'
);
if
(
parts
.
size
()
<
2
||
!
parts
.
last
().
isEmpty
())
{
SDEBUG
(
"WRONG RESPONSE PACKET LAYOUT"
<<
parts
);
//if (response.isEmpty())
acknowledgeResult
();
return
;
}
parts
.
removeLast
();
// always empty
...
...
@@ -376,25 +402,26 @@ void TcfEngine::handleResponse(const QByteArray &response)
void
TcfEngine
::
startDebugging
()
{
foreach
(
const
QByteArray
&
service
,
m_services
)
{
postCommand
(
CB
(
handleRunControlGetChildren
),
service
,
"getChildren"
,
"
\"\"
"
);
}
postCommand
(
CB
(
handleRunControlGetChildren
),
"Diagnostics"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"Streams"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"Expressions"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"SysMonitor"
,
"getChildren"
);
//postCommand(CB(handleRunControlGetChildren), "FileSystem", "getChildren");
postCommand
(
CB
(
handleRunControlGetChildren
),
"Processes"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"LineNumbers"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"Symbols"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"StackTrace"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"Registers"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"Memory"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"Breakpoints"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"RunControl"
,
"getChildren"
);
postCommand
(
CB
(
handleRunControlGetChildren
),
"Locator"
,
"getChildren"
);
//foreach (const QByteArray &service, m_services) {
// postCommand(CB(handleRunControlGetChildren),
// service, "getChildren", "\"\"");
//}
postCommand
(
C
(
"Diagnostics"
,
"getChildren"
,
"
\"\"
"
),
CB
(
handleRunControlGetChildren
));
postCommand
(
C
(
"Streams"
,
"getChildren"
,
"
\"\"
"
));
postCommand
(
C
(
"Expressions"
,
"getChildren"
,
"
\"\"
"
));
postCommand
(
C
(
"SysMonitor"
,
"getChildren"
,
"
\"\"
"
));
//postCommand(C("FileSystem", "getChildren", "\"\""));
//postCommand(C("Processes", "getChildren", "\"\""));
//postCommand(CB(handleRunControlGetChildren), "LineNumbers", "getChildren");
//postCommand(CB(handleRunControlGetChildren), "Symbols", "getChildren");
//postCommand(CB(handleRunControlGetChildren), "StackTrace", "getChildren");
//postCommand(CB(handleRunControlGetChildren), "Registers", "getChildren");
//postCommand(CB(handleRunControlGetChildren), "Memory", "getChildren");
//postCommand(CB(handleRunControlGetChildren), "Breakpoints", "getChildren");
//postCommand(CB(handleRunControlGetChildren), "RunControl", "getChildren");
//postCommand(CB(handleRunControlGetChildren), "Locator", "getChildren");
//postCommand(CB(handleRunControlSuspend),
...
...
@@ -402,36 +429,33 @@ void TcfEngine::startDebugging()
//postCommand(CB(handleRunControlSuspend),
// "RunControl", "getContext", "\"P12318\"");
//postCommand("Locator", "sync",
""
);
//postCommand(
C(
"Locator", "sync"
)
,
CB(handleRunControlGetChildren)
);
//postCommand("Locator", "redirect", "ID");
//postCommand(C("FileSystem", "open", "\"/bin/ls\"", "1", "2", "3"),
// CB(handleRunControlGetChildren));
postCommand
(
C
(
"FileSystem"
,
"stat"
,
"
\"
/bin/ls
\"
"
),
CB
(
handleRunControlGetChildren
));
}
void
TcfEngine
::
postCommand
(
TcfCommandCallback
callback
,
const
char
*
callbackName
,
const
QByteArray
&
service
,
const
QByteArray
&
cmd
,
const
QByteArray
&
args
)
void
TcfEngine
::
postCommand
(
const
QByteArray
&
cmd
,
TcfCommandCallback
callback
,
const
char
*
callbackName
)
{
static
int
token
=
20
;
++
token
;
const
char
delim
=
0
;
//const char marker_eom = -1;
//const char marker_eos = -2;
//const char marker_null = -3;
QByteArray
ba
=
"C"
;
ba
.
append
(
delim
);
ba
.
append
(
'\0'
);
ba
.
append
(
QByteArray
::
number
(
token
));
ba
.
append
(
delim
);
ba
.
append
(
service
);
ba
.
append
(
delim
);
ba
.
append
(
'\0'
);
ba
.
append
(
cmd
);
ba
.
append
(
delim
);
ba
.
append
(
args
);
ba
.
append
(
delim
);
ba
.
append
(
3
);
ba
.
append
(
1
);
ba
.
append
(
'\0'
);
ba
.
append
(
'\3'
);
ba
.
append
(
'\1'
);
TcfCommand
tcf
;
tcf
.
command
=
ba
;
...
...
@@ -441,7 +465,7 @@ void TcfEngine::postCommand(TcfCommandCallback callback,
m_cookieForToken
[
token
]
=
tcf
;
enqueueCommand
(
tcf
);
// congestion based
enqueueCommand
(
tcf
);
}
// Congestion control does not seem to work that way. Basically it's
...
...
@@ -485,10 +509,10 @@ void TcfEngine::sendCommandNow(const TcfCommand &cmd)
{
++
m_inAir
;
int
result
=
m_socket
->
write
(
cmd
.
command
);
Q_UNUSED
(
result
);
m_socket
->
flush
();
emit
tcfInputAvailable
(
"send"
,
QString
::
number
(
cmd
.
token
)
+
" "
+
cmd
.
toString
()
+
" "
+
QString
::
number
(
result
));
SDEBUG
(
"SEND "
<<
cmd
.
toString
()
<<
" "
<<
QString
::
number
(
result
));
emit
tcfInputAvailable
(
"send"
,
QString
::
number
(
cmd
.
token
)
+
" "
+
cmd
.
toString
());
SDEBUG
(
"SEND "
<<
cmd
.
toString
());
//<< " " << QString::number(result));
}
void
TcfEngine
::
acknowledgeResult
()
...
...
@@ -503,7 +527,7 @@ void TcfEngine::acknowledgeResult()
void
TcfEngine
::
handleRunControlSuspend
(
const
TcfData
&
data
,
const
QVariant
&
)
{
SDEBUG
(
"HANDLE RESULT"
);
SDEBUG
(
"HANDLE RESULT"
<<
data
.
toString
()
);
}
void
TcfEngine
::
handleRunControlGetChildren
(
const
TcfData
&
data
,
const
QVariant
&
)
...
...
@@ -559,6 +583,7 @@ void TcfEngine::updateWatchModel()
void
TcfEngine
::
updateSubItem
(
const
WatchData
&
data0
)
{
Q_UNUSED
(
data0
);
QTC_ASSERT
(
false
,
return
);
}
...
...
src/plugins/debugger/tcfengine.h
View file @
9b8d1481
...
...
@@ -152,11 +152,8 @@ private:
QVariant
cookie
;
};
void
postCommand
(
TcfCommandCallback
callback
,
const
char
*
callbackName
,
const
QByteArray
&
service
,
const
QByteArray
&
cmd
,
const
QByteArray
&
args
=
"
\"\"
"
);
void
postCommand
(
const
QByteArray
&
cmd
,
TcfCommandCallback
callback
=
0
,
const
char
*
callbackName
=
0
);
void
sendCommandNow
(
const
TcfCommand
&
command
);
QHash
<
int
,
TcfCommand
>
m_cookieForToken
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment