GDBThreadGroup.st
changeset 36 095c4b0b74d3
parent 35 c17ecf90e446
child 37 a85f0c91f164
--- a/GDBThreadGroup.st	Sun Sep 07 14:42:02 2014 +0100
+++ b/GDBThreadGroup.st	Sun Sep 07 22:44:55 2014 +0100
@@ -1,6 +1,6 @@
 "{ Package: 'jv:libgdbs' }"
 
-GDBObject subclass:#GDBThreadGroup
+GDBDebuggerObject subclass:#GDBThreadGroup
 	instanceVariableNames:'id pid exit_code threads'
 	classVariableNames:''
 	poolDictionaries:''
@@ -9,10 +9,10 @@
 
 !GDBThreadGroup class methodsFor:'instance creation'!
 
-newWithId: aString
-    ^ self new setId: aString; yourself
+newWithDebugger: debugger id: aString
+    ^ self new setDebugger: debugger; setId: aString; yourself
 
-    "Created: / 06-09-2014 / 02:31:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 07-09-2014 / 21:18:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBThreadGroup class methodsFor:'accessing - GDB value descriptors'!
@@ -42,13 +42,46 @@
     ^ pid
 !
 
+threadWithId: tid
+    ^ threads ? #() detect:[:e | e id = tid ] ifNone:[
+        self error: ('No thread with id ''%1'' found!!' bindWith: tid)        
+    ].
+
+    "Created: / 07-09-2014 / 21:37:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 threads
     threads isNil ifTrue:[ 
         threads := List new.
+    ]. 
+    ^ threads
+
+    "Modified: / 06-09-2014 / 02:23:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 07-09-2014 / 21:42:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBThreadGroup methodsFor:'event handling'!
+
+onThreadCreated:aGDBThreadCreatedEvent
+    | thread |
+    threads isNil ifTrue:[ 
+        threads := List new.
     ].
-    ^ threads
+    thread := GDBThread newWithDebugger: debugger id: aGDBThreadCreatedEvent threadId group: self.
+    threads add: thread.
+    aGDBThreadCreatedEvent setThread: thread.
+
+    "Created: / 07-09-2014 / 21:25:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
-    "Modified: / 06-09-2014 / 02:23:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+onThreadExited:aGDBThreadExitedEvent
+    | thread |
+
+    thread := self threadWithId:aGDBThreadExitedEvent threadId.
+    thread setTerminated.
+    aGDBThreadExitedEvent setThread: thread
+
+    "Created: / 07-09-2014 / 21:25:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBThreadGroup methodsFor:'initialization'!