An error occurred while loading the file. Please try again.
-
Antoine Regimbeau authored512a14f0
<?xml version="1.0"?>
<st-source>
<!--
Name: Opentalk-Tools-Monitor
Notice: Copyright © 2008 Cincom Systems, Inc. All Rights Reserved.
Comment: Opentalk-Tools-Monitor defines a general purpose broker/adaptor event monitor. It supports registration for events and event inspection. It may also be used to monitor events generated during Opentalk SUnit test runs.
Copyright: Copyright © 1999-2002 Cincom Systems, Inc.
All Rights Reserved
DbIdentifier: bear73
DbTrace: 88204
DevelopmentPrerequisites: #(#(#package 'Opentalk-Tools-Basic' ''))
PackageName: Opentalk-Tools-Monitor
Parcel: #('Opentalk-Tools-Monitor')
ParcelName: Opentalk-Tools-Monitor
PrerequisiteParcels: #(#('Opentalk-Tools-Basic' ''))
PrintStringCache: (751 1,mkobetic)
Version: 7.6
Date: 1:02:04 pm February 1, 2008
-->
<time-stamp>From VisualWorks®, 7.6 of February 1, 2008 on February 1, 2008 at 1:02:04 pm</time-stamp>
<do-it>(Dialog confirm: 'You are filing-in a Parcel source file!\\While this is possible it will not have\the same effect as loading the parcel.\None of the Parcel''s prerequisites will\be loaded and none of its load actions\will be performed.\\Are you sure you want to file-in?' withCRs) ifFalse: [self error: 'Parcel file-in abandoned. Choose terminate or close.']</do-it>
<class>
<name>EventList</name>
<environment>Opentalk</environment>
<super>Protocols.EventCollector</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>filter </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Monitor</category>
<attributes>
<package>Opentalk-Tools-Monitor</package>
</attributes>
</class>
<class>
<name>EventSubscriptionDisplayFrame</name>
<environment>Opentalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>subject path event </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Monitor</category>
<attributes>
<package>Opentalk-Tools-Monitor</package>
</attributes>
</class>
<class>
<name>OpentalkMonitor</name>
<environment>Opentalk</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>componentListSubcanvas eventSubscriptionSubcanvas eventListSubcanvas </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Monitor</category>
<attributes>
<package>Opentalk-Tools-Monitor</package>
</attributes>
</class>
<class>
<name>EventDisplayFrame</name>
<environment>Opentalk</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>time selector arguments component list </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Monitor</category>
<attributes>
<package>Opentalk-Tools-Monitor</package>
</attributes>
</class>
<class>
<name>EventListSubcanvas</name>
<environment>Opentalk</environment>
<super>Opentalk.FilterableListSubcanvas</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>eventCollector listView </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Monitor</category>
<attributes>
<package>Opentalk-Tools-Monitor</package>
</attributes>
</class>
<comment>
<class-id>Opentalk.EventListSubcanvas</class-id>
<body>Instance Variables:
eventCollector <EventList> the list of received events
listView <ListView> handle on the event list view
</body>
</comment>
<class>
<name>EventSubscriptionSubcanvas</name>
<environment>Opentalk</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>eventSubscriptionSIL selectionHolder componentHolder eventCollectorHolder subscriptionCache currentSubscription </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Monitor</category>
<attributes>
<package>Opentalk-Tools-Monitor</package>
</attributes>
</class>
<shared-variable>
<name>SubscriptionsDictionary</name>
<environment>Opentalk.OpentalkMonitor</environment>
<private>false</private>
<constant>false</constant>
<category>subscriptions</category>
<attributes>
<package>Opentalk-Tools-Monitor</package>
</attributes>
</shared-variable>
<methods>
<class-id>Opentalk.EventList</class-id> <category>initialize/release</category>
<body package="Opentalk-Tools-Monitor" selector="initialize:">initialize: eventsSize
events := List new: eventsSize</body>
</methods>
<methods>
<class-id>Opentalk.EventList</class-id> <category>accessing</category>
<body package="Opentalk-Tools-Monitor" selector="filter">filter
^filter</body>
<body package="Opentalk-Tools-Monitor" selector="filter:">filter: anObject
filter := anObject</body>
</methods>
<methods>
<class-id>Opentalk.EventList</class-id> <category>services</category>
<body package="Opentalk-Tools-Monitor" selector="log:from:">log: aMessage from: aComponent
self process: (
EventDisplayFrame
time: Time millisecondClockValue
selector: aMessage selector
arguments: aMessage arguments
from: aComponent
for: self )</body>
</methods>
<methods>
<class-id>Opentalk.EventList</class-id> <category>private</category>
<body package="Opentalk-Tools-Monitor" selector="doesNotUnderstand:">doesNotUnderstand: aMessage
| component context |
context := thisContext sender sender.
[ context isNil or: [ (component := context receiver) isKindOf: GenericProtocol ] ]
whileFalse: [ context := context sender ].
context isNil
ifTrue: [ self process: aMessage ]
ifFalse: [ (filter isNil or: [ filter shouldAccept: aMessage from: component ])
ifTrue: [ self process: (
EventDisplayFrame
time: Time millisecondClockValue
selector: aMessage selector
arguments: aMessage arguments
from: component
for: self) ] ]</body>
<body package="Opentalk-Tools-Monitor" selector="privateProcess:">privateProcess: anEvent
events add: (anEvent asEventDisplayFrameFor: self)</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionDisplayFrame</class-id> <category>printing</category>
<body package="Opentalk-Tools-Monitor" selector="displayString">displayString
| str |
str := WriteStream on: ( String new: 32 ).
path do: [ :sel | str
nextPutAll: sel asString;
nextPut: Character space ].
str nextPutAll: event asString.
^str contents</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionDisplayFrame</class-id> <category>accessing</category>
<body package="Opentalk-Tools-Monitor" selector="event">event
^event</body>
<body package="Opentalk-Tools-Monitor" selector="event:">event: aSymbol
event := aSymbol</body>
<body package="Opentalk-Tools-Monitor" selector="path">path
^path</body>
<body package="Opentalk-Tools-Monitor" selector="path:">path: anOrderedCollection
path := anOrderedCollection</body>
<body package="Opentalk-Tools-Monitor" selector="subject">subject
^subject</body>
<body package="Opentalk-Tools-Monitor" selector="subject:">subject: anObject
subject := anObject</body>
<body package="Opentalk-Tools-Monitor" selector="target">target
^path inject: subject into: [ :x :y | x perform: y ]</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionDisplayFrame</class-id> <category>initialize-release</category>
<body package="Opentalk-Tools-Monitor" selector="initialize">initialize
subject := nil.
path := OrderedCollection new: 2.
event := nil</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionDisplayFrame class</class-id> <category>instance creation</category>
<body package="Opentalk-Tools-Monitor" selector="new">new
^super new initialize</body>
<body package="Opentalk-Tools-Monitor" selector="subject:event:">subject: anObject event: aSymbol
^( self new )
subject: anObject;
event: aSymbol;
yourself</body>
<body package="Opentalk-Tools-Monitor" selector="subject:path:event:">subject: anObject path: anArray event: aSymbol
^( self new )
subject: anObject;
path: anArray;
event: aSymbol;
yourself</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionDisplayFrame class</class-id> <category>accessing</category>
<body package="Opentalk-Tools-Monitor" selector="sortBlock">sortBlock
^[:x :y | ( x path size < y path size )
or: [ x displayString <= y displayString ] ]</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor</class-id> <category>accessing</category>
<body package="Opentalk-Tools-Monitor" selector="componentListSubcanvas">componentListSubcanvas
^componentListSubcanvas</body>
<body package="Opentalk-Tools-Monitor" selector="eventListSubcanvas">eventListSubcanvas
^eventListSubcanvas</body>
<body package="Opentalk-Tools-Monitor" selector="eventSubscriptionSubcanvas">eventSubscriptionSubcanvas
^eventSubscriptionSubcanvas</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor</class-id> <category>initialize-release</category>
<body package="Opentalk-Tools-Monitor" selector="initialize">initialize
componentListSubcanvas := ComponentListSubcanvas new.
eventListSubcanvas := EventListSubcanvas new.
eventSubscriptionSubcanvas := EventSubscriptionSubcanvas new.
eventSubscriptionSubcanvas componentHolder: componentListSubcanvas selectionHolder.
componentListSubcanvas selectionHolder onChangeSend: #changedComponent to: self.
eventListSubcanvas selectionIndexHolder onChangeSend: #changedEvents to: self.
eventSubscriptionSubcanvas eventCollectorHolder value: eventListSubcanvas eventCollector.
self filterEventsFromUnregisteredComponents: true.</body>
<body package="Opentalk-Tools-Monitor" selector="noticeOfWindowClose:">noticeOfWindowClose: aWindow
#{Opentalk.Log} ifDefinedDo: [ :log |
log == self eventListSubcanvas eventCollector
ifTrue: [ #{Opentalk.Log} value: nil ] ].
self release.
^super noticeOfWindowClose: aWindow</body>
<body package="Opentalk-Tools-Monitor" selector="release">release
componentListSubcanvas selectionHolder retractInterestsFor: self.
eventListSubcanvas selectionIndexHolder retractInterestsFor: self.
componentListSubcanvas release.
eventSubscriptionSubcanvas release.
eventListSubcanvas release.
^super release</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor</class-id> <category>actions</category>
<body package="Opentalk-Tools-Monitor" selector="filterEventsFromUnregisteredComponents:">filterEventsFromUnregisteredComponents: aBoolean
eventListSubcanvas eventFilter: (
aBoolean
ifTrue: [ eventSubscriptionSubcanvas ]
ifFalse: [ nil ])</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor</class-id> <category>menu item actions</category>
<body package="Opentalk-Tools-Monitor" selector="clearAllLogItems">clearAllLogItems
eventListSubcanvas clearAllLogItems.
self changedEvents</body>
<body package="Opentalk-Tools-Monitor" selector="decrementComponentPort">decrementComponentPort
componentListSubcanvas decrementPort</body>
<body package="Opentalk-Tools-Monitor" selector="incrementComponentPort">incrementComponentPort
componentListSubcanvas incrementPort</body>
<body package="Opentalk-Tools-Monitor" selector="inspectComponent">inspectComponent
componentListSubcanvas inspectComponent</body>
<body package="Opentalk-Tools-Monitor" selector="inspectLogItem">inspectLogItem
eventListSubcanvas inspectLogItem</body>
<body package="Opentalk-Tools-Monitor" selector="refreshMonitor">refreshMonitor
builder window refresh</body>
<body package="Opentalk-Tools-Monitor" selector="removeComponent">removeComponent
componentListSubcanvas removeComponent</body>
<body package="Opentalk-Tools-Monitor" selector="selectAllSubscriptions">selectAllSubscriptions
eventSubscriptionSubcanvas selectAllSubscriptions</body>
<body package="Opentalk-Tools-Monitor" selector="startComponent">startComponent
componentListSubcanvas startComponent</body>
<body package="Opentalk-Tools-Monitor" selector="stopComponent">stopComponent
componentListSubcanvas stopComponent</body>
<body package="Opentalk-Tools-Monitor" selector="unselectAllSubscriptions">unselectAllSubscriptions
eventSubscriptionSubcanvas unselectAllSubscriptions</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor</class-id> <category>update</category>
<body package="Opentalk-Tools-Monitor" selector="changedComponent">changedComponent
self resetMenuBar</body>
<body package="Opentalk-Tools-Monitor" selector="changedEvents">changedEvents
self resetMenuBar</body>
<body package="Opentalk-Tools-Monitor" selector="resetMenuBar">resetMenuBar
| bool mb |
bool := componentListSubcanvas selectionHolder value ~~ nil.
mb := self builder menuAt: #menuBar.
( mb atNameKey: #startComponent ) enabled: bool.
( mb atNameKey: #stopComponent ) enabled: bool.
( mb atNameKey: #incrementComponentPort ) enabled: bool.
( mb atNameKey: #decrementComponentPort ) enabled: bool.
( mb atNameKey: #inspectComponent ) enabled: bool.
( mb atNameKey: #removeComponent ) enabled: bool.
( mb atNameKey: #selectAllSubscriptions ) enabled: bool.
( mb atNameKey: #unselectAllSubscriptions ) enabled: bool.
bool := ( eventListSubcanvas eventCollector events size ) ~~ 0.
( mb atNameKey: #clearAllLogItems ) enabled: bool.
bool := ( eventListSubcanvas selectionInList selection ) ~~ nil.
( mb atNameKey: #inspectLogItem ) enabled: bool.</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor</class-id> <category>interface opening</category>
<body package="Opentalk-Tools-Monitor" selector="postOpenWith:">postOpenWith: aBuilder
self resetMenuBar</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor class</class-id> <category>class initialization</category>
<body package="Opentalk-Tools-Monitor" selector="initialize">initialize
"((( OpentalkEventMonitoringTool initialize )))"
SubscriptionsDictionary := IdentityDictionary new</body>
</methods>
<methods>
<class-id>Opentalk.EventDisplayFrame</class-id> <category>accessing</category>
<body package="Opentalk-Tools-Monitor" selector="arguments">arguments
^arguments</body>
<body package="Opentalk-Tools-Monitor" selector="arguments:">arguments: anArray
arguments := anArray</body>
<body package="Opentalk-Tools-Monitor" selector="component">component
^component</body>
<body package="Opentalk-Tools-Monitor" selector="component:">component: anObject
component := anObject</body>
<body package="Opentalk-Tools-Monitor" selector="list">list
^list</body>
<body package="Opentalk-Tools-Monitor" selector="list:">list: anObject
list := anObject</body>
<body package="Opentalk-Tools-Monitor" selector="selector">selector
^selector</body>
<body package="Opentalk-Tools-Monitor" selector="selector:">selector: aSymbol
selector := aSymbol</body>
<body package="Opentalk-Tools-Monitor" selector="time">time
^time</body>
<body package="Opentalk-Tools-Monitor" selector="time:">time: anInteger
time := anInteger</body>
</methods>
<methods>
<class-id>Opentalk.EventDisplayFrame</class-id> <category>filter aspects</category>
<body package="Opentalk-Tools-Monitor" selector="classname">classname
^self component classname</body>
<body package="Opentalk-Tools-Monitor" selector="event">event
^self selector</body>
<body package="Opentalk-Tools-Monitor" selector="hostAddress">hostAddress
^self component accessPoint hostAddress</body>
<body package="Opentalk-Tools-Monitor" selector="port">port
^self component port</body>
<body package="Opentalk-Tools-Monitor" selector="protocolTag">protocolTag
^self component protocolTag</body>
</methods>
<methods>
<class-id>Opentalk.EventDisplayFrame</class-id> <category>converting</category>
<body package="Opentalk-Tools-Monitor" selector="asEventDisplayFrameFor:">asEventDisplayFrameFor: anEventList
^self</body>
</methods>
<methods>
<class-id>Opentalk.EventDisplayFrame</class-id> <category>printing</category>
<body package="Opentalk-Tools-Monitor" selector="displayString">displayString
| str tm |
str := TextStream on: ( String new: 64 ).
tm := (Time aTime: time // 1000) last.
tm hours printOn: str paddedWith: $0 to: 2 base: 10.
str nextPut: $:.
tm minutes printOn: str paddedWith: $0 to: 2 base: 10.
str nextPut: $:.
tm seconds printOn: str paddedWith: $0 to: 2 base: 10.
str nextPut: $..
time \\ 1000 printOn: str paddedWith: $0 to: 3 base: 10.
str space;
print: component;
space.
list printEvent: self on: str.
^str contents</body>
</methods>
<methods>
<class-id>Opentalk.EventDisplayFrame class</class-id> <category>instance creation</category>
<body package="Opentalk-Tools-Monitor" selector="time:selector:arguments:for:">time: anInteger selector: aSymbol arguments: anArray for: anEventList
^( self new )
time: anInteger;
selector: aSymbol;
arguments: anArray;
list: anEventList
yourself</body>
<body package="Opentalk-Tools-Monitor" selector="time:selector:arguments:from:for:">time: anInteger selector: aSymbol arguments: anArray from: aComponent for: anEventList
^( self new )
time: anInteger;
selector: aSymbol;
arguments: anArray;
component: aComponent;
list: anEventList
yourself</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas</class-id> <category>aspects</category>
<body package="Opentalk-Tools-Monitor" selector="classnameFilterAdaptor">classnameFilterAdaptor
^(PluggableAdaptor on: self)
getBlock: [:m | m hasFilter: 1 ]
putBlock: [:m :v | m switchFilter:1 perform: #classname ]
updateBlock: [:m :a :p | a == #filter and: [ p = 1 ] ]</body>
<body package="Opentalk-Tools-Monitor" selector="componentFilterAdaptor">componentFilterAdaptor
^(PluggableAdaptor on: self)
getBlock: [:m | m hasFilter: 5 ]
putBlock: [:m :v | m switchFilter: 5 perform: #component ]
updateBlock: [:m :a :p | a == #filter and: [ p = 5 ] ]</body>
<body package="Opentalk-Tools-Monitor" selector="eventFilterAdaptor">eventFilterAdaptor
^(PluggableAdaptor on: self)
getBlock: [:m | m hasFilter: 7 ]
putBlock: [:m :v | m switchFilter: 7 perform: #event ]
updateBlock: [:m :a :p | a == #filter and: [ p = 7 ] ]</body>
<body package="Opentalk-Tools-Monitor" selector="hostAddressFilterAdaptor">hostAddressFilterAdaptor
^(PluggableAdaptor on: self)
getBlock: [:m | m hasFilter: 2 ]
putBlock: [:m :v | m switchFilter: 2 perform: #hostAddress ]
updateBlock: [:m :a :p | a == #filter and: [ p = 2 ] ]</body>
<body package="Opentalk-Tools-Monitor" selector="portFilterAdaptor">portFilterAdaptor
^(PluggableAdaptor on: self)
getBlock: [:m | m hasFilter: 3 ]
putBlock: [:m :v | m switchFilter: 3 perform: #port ]
updateBlock: [:m :a :p | a == #filter and: [ p = 3 ] ]</body>
<body package="Opentalk-Tools-Monitor" selector="protocolTagFilterAdaptor">protocolTagFilterAdaptor
^(PluggableAdaptor on: self)
getBlock: [:m | m hasFilter: 4 ]
putBlock: [:m :v | m switchFilter: 4 perform: #protocolTag ]
updateBlock: [:m :a :p | a == #filter and: [ p = 4 ] ]</body>
<body package="Opentalk-Tools-Monitor" selector="subcomponentFilterAdaptor">subcomponentFilterAdaptor
^(PluggableAdaptor on: self)
getBlock: [:m | m hasFilter: 6 ]
putBlock: [:m :v | m switchFilter: 6 perform: #subcomponent ]
updateBlock: [:m :a :p | a == #filter and: [ p = 6 ] ]</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas</class-id> <category>accessing</category>
<body package="Opentalk-Tools-Monitor" selector="eventCollector">eventCollector
^eventCollector</body>
<body package="Opentalk-Tools-Monitor" selector="eventFilter">eventFilter
^eventCollector filter</body>
<body package="Opentalk-Tools-Monitor" selector="eventFilter:">eventFilter: anEventSubscriptionSubcanvas
eventCollector filter: anEventSubscriptionSubcanvas</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas</class-id> <category>initialize-release</category>
<body package="Opentalk-Tools-Monitor" selector="initialize">initialize
eventCollector := EventList new.
unfilteredList := eventCollector events.
unfilteredList addDependent: self.
super initialize</body>
<body package="Opentalk-Tools-Monitor" selector="initializeUnfilteredList">initializeUnfilteredList</body>
<body package="Opentalk-Tools-Monitor" selector="release">release
unfilteredList removeDependent: self.
super release</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas</class-id> <category>update</category>
<body package="Opentalk-Tools-Monitor" selector="changedEvents">changedEvents
self updateList.
listView scrollTo: (0 @ listView scrollableExtent y) negated</body>
<body package="Opentalk-Tools-Monitor" selector="changedSelection">changedSelection
self updateDisplay</body>
<body package="Opentalk-Tools-Monitor" selector="update:">update: aSymbol
"... catches updates from the EventList."
( aSymbol == #insert: )
ifTrue: [ self changedEvents ].
super update: aSymbol</body>
<body package="Opentalk-Tools-Monitor" selector="updateDisplay">updateDisplay
| bool |
bool := selectionHolder value notNil.
( builder componentAt: #classnameCheckBox ) isEnabled: bool.
( builder componentAt: #eventCheckBox ) isEnabled: bool.
( builder componentAt: #componentCheckBox ) isEnabled: bool.
( builder componentAt: #protocolTagCheckBox ) isEnabled: bool.
( builder componentAt: #portCheckBox ) isEnabled: bool.
( builder componentAt: #hostAddressCheckBox ) isEnabled: bool.</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas</class-id> <category>actions</category>
<body package="Opentalk-Tools-Monitor" selector="clearAllLogItems">clearAllLogItems
Cursor execute
showWhile: [
filter := [:change | true].
1 to: filterList size do: [ :i |
filterList at: i put: nil.
self changed: #filter with: i ].
unfilteredList removeAll: filteredList.
filteredList := unfilteredList copy.
selectionInList list: filteredList.
self updateSelection: 0 ]</body>
<body package="Opentalk-Tools-Monitor" selector="inspectLogItem">inspectLogItem
selectionInList selection inspect</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas</class-id> <category>private</category>
<body package="Opentalk-Tools-Monitor" selector="filterTemplates">filterTemplates
^#( #( filterByClassname filterByHostAddress filterByPort filterByProtocolTag filterByComponent filterByEvent )
#( classname hostAddress port protocolTag component event ) )</body>
<body package="Opentalk-Tools-Monitor" selector="postBuildWith:">postBuildWith: aBuilder
listView := (aBuilder componentAt: #selectionInList) widget</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionSubcanvas</class-id> <category>accessing</category>
<body package="Opentalk-Tools-Monitor" selector="componentHolder">componentHolder
^componentHolder</body>
<body package="Opentalk-Tools-Monitor" selector="componentHolder:">componentHolder: aValueModel
( componentHolder notNil )
ifTrue: [ componentHolder retractInterestsFor: self ].
componentHolder := aValueModel.
componentHolder onChangeSend: #changedComponent to: self</body>
<body package="Opentalk-Tools-Monitor" selector="eventCollectorHolder">eventCollectorHolder
^eventCollectorHolder</body>
<body package="Opentalk-Tools-Monitor" selector="selectionHolder">selectionHolder
^selectionHolder</body>
<body package="Opentalk-Tools-Monitor" selector="shouldAccept:from:">shouldAccept: aMessage from: component
self componentHolder value ifNotNil: [ :selectedComponent |
(component protocolTag = selectedComponent protocolTag)
ifTrue: [^eventSubscriptionSIL selections anySatisfy: [ :frame |
frame event = aMessage selector ] ] ].
subscriptionCache associationsDo: [ :ass |
(ass key protocolTag = component protocolTag) ifTrue: [
^ass value value anySatisfy: [ :frame | frame event = aMessage selector ] ] ].
^true</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionSubcanvas</class-id> <category>aspects</category>
<body package="Opentalk-Tools-Monitor" selector="eventSubscriptionSIL">eventSubscriptionSIL
^eventSubscriptionSIL</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionSubcanvas</class-id> <category>initialize-release</category>
<body package="Opentalk-Tools-Monitor" selector="initialize">initialize
self componentHolder: ValueHolder new.
eventCollectorHolder := ValueHolder new.
eventSubscriptionSIL := ( MultiSelectionInList new ).
selectionHolder := eventSubscriptionSIL selectionHolder.
selectionHolder onChangeSend: #changedSelectedEvents to: self.
subscriptionCache := IdentityDictionary new.</body>
<body package="Opentalk-Tools-Monitor" selector="noticeOfWindowClose:">noticeOfWindowClose: aWindow
self release.
^super noticeOfWindowClose: aWindow</body>
<body package="Opentalk-Tools-Monitor" selector="release">release
| targets collector |
targets := subscriptionCache inject: Set new into: [ :set :ass |
ass key inject: set into: [ :tset :ev |
tset add: ev target; yourself ].
set ].
collector := eventCollectorHolder value.
targets do: [ :t | t removeAllActionsWithReceiver: collector ].
selectionHolder retractInterestsFor: self.
componentHolder retractInterestsFor: self.
^super release</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionSubcanvas</class-id> <category>actions</category>
<body package="Opentalk-Tools-Monitor" selector="selectAllSubscriptions">selectAllSubscriptions
self eventSubscriptionSIL selectAll</body>
<body package="Opentalk-Tools-Monitor" selector="unselectAllSubscriptions">unselectAllSubscriptions
self eventSubscriptionSIL clearAll</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionSubcanvas</class-id> <category>update</category>
<body package="Opentalk-Tools-Monitor" selector="changedComponent">changedComponent
| sel |
currentSubscription ifNotNil: [ :ass |
ass
key: eventSubscriptionSIL list;
value: eventSubscriptionSIL selections ].
sel := self componentHolder value.
currentSubscription := sel isNil
ifTrue: [ eventSubscriptionSIL list: List new. nil ]
ifFalse: [ | ass |
ass := subscriptionCache
at: sel
ifAbsentPut: [ sel allOwnAndComponentEventsFramed asList -> #() ].
eventSubscriptionSIL setList: ass key selecting: ass value.
ass ]</body>
<body package="Opentalk-Tools-Monitor" selector="changedSelectedEvents">changedSelectedEvents
| targets collector |
targets := ( eventSubscriptionSIL list collect: [ :x | x target ] ) asSet.
collector := eventCollectorHolder value.
targets do: [ :t | t removeAllActionsWithReceiver: collector ].
eventSubscriptionSIL selections
do: [ :f | f target installMonitoringActionForEvent: f event and: collector ].
"This is to update the count of handled events in the component subcanvas.
It took some debugging of the DataSetView to figure this one out"
self componentHolder value changed: #numberOfHandledEvents with: #reset</body>
</methods>
<methods>
<class-id>Opentalk.BasicRequestBroker class</class-id> <category>opentalk tool support</category>
<body package="Opentalk-Tools-Monitor" selector="eventTriggeringComponentSelectors">eventTriggeringComponentSelectors
^#( #objectAdaptor )</body>
</methods>
<methods>
<class-id>Core.MessageSend</class-id> <category>opentalk</category>
<body package="Opentalk-Tools-Monitor" selector="asEventDisplayFrameFor:">asEventDisplayFrameFor: anEventList
^Opentalk.EventDisplayFrame
time: Time millisecondClockValue
selector: selector
arguments: args
from: receiver
for: anEventList</body>
</methods>
<methods>
<class-id>Opentalk.GenericProtocol class</class-id> <category>opentalk tool support</category>
<body package="Opentalk-Tools-Monitor" selector="eventTriggeringComponentSelectors">eventTriggeringComponentSelectors
^#()</body>
</methods>
<methods>
<class-id>Opentalk.GenericProtocol</class-id> <category>opentalk tool support</category>
<body package="Opentalk-Tools-Monitor" selector="allComponentEvents">allComponentEvents
^self class eventTriggeringComponentSelectors
inject: ( OrderedCollection new: 8 )
into: [ :x :y | | sc |
sc := self perform: y.
x
addAll: ( sc class allEvents );
addAll: ( sc allComponentEvents )
]</body>
<body package="Opentalk-Tools-Monitor" selector="allComponentEventsFramed">allComponentEventsFramed
^self allEventsFramedWithPath: ( OrderedCollection new: 2 )</body>
<body package="Opentalk-Tools-Monitor" selector="allEventsFramedWithPath:">allEventsFramedWithPath: anOrderedCollection
| sc target |
sc := SortedCollection sortBlock: EventSubscriptionDisplayFrame sortBlock.
target := anOrderedCollection inject: self into: [ :x :y | x perform: y ].
target class eventTriggeringComponentSelectors do:
[ :sel | | obj np scevs |
obj := target perform: sel.
np := anOrderedCollection copy.
np add: sel.
scevs := obj class allEvents.
scevs do: [ :ev | sc add: ( EventSubscriptionDisplayFrame
subject: target
path: np
event: ev )
].
sc addAll: ( self allEventsFramedWithPath: np ).
].
^sc</body>
<body package="Opentalk-Tools-Monitor" selector="allOwnAndComponentEvents">allOwnAndComponentEvents
^self allOwnEvents addAll: self allComponentEvents</body>
<body package="Opentalk-Tools-Monitor" selector="allOwnAndComponentEventsFramed">allOwnAndComponentEventsFramed
| sc |
sc := self allOwnEventsFramed.
sc addAll: self allComponentEventsFramed.
^sc</body>
<body package="Opentalk-Tools-Monitor" selector="allOwnEvents">allOwnEvents
^self class allEvents asOrderedCollection</body>
<body package="Opentalk-Tools-Monitor" selector="allOwnEventsFramed">allOwnEventsFramed
^SortedCollection
withAll: ( self allOwnEvents collect: [ :e | EventSubscriptionDisplayFrame subject: self event: e ] )
sortBlock: EventSubscriptionDisplayFrame sortBlock</body>
<body package="Opentalk-Tools-Monitor" selector="installMonitoringActionForEvent:and:">installMonitoringActionForEvent: anEventSymbol and: anEventCollector
self
when: anEventSymbol
evaluate: (
LinkMessage
receiver: anEventCollector
selector: #log:from:
arguments: (
Array
with: (ArgumentTransformer withBlock: [ :args |
Message selector: anEventSymbol arguments: args ])
with: self ) )</body>
</methods>
<methods>
<class-id>Core.Message</class-id> <category>opentalk</category>
<body package="Opentalk-Tools-Monitor" selector="asEventDisplayFrameFor:">asEventDisplayFrameFor: anEventList
^Opentalk.EventDisplayFrame
time: Time millisecondClockValue
selector: selector
arguments: args
for: anEventList</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor class</class-id> <category>interface specs</category>
<body package="Opentalk-Tools-Monitor" selector="windowSpec">windowSpec
"Tools.UIPainter new openOnClass: self andSelector: #windowSpec"
<resource: #canvas>
^#(#{UI.FullSpec}
#window:
#(#{UI.WindowSpec}
#label: #(#{Kernel.UserMessage} #key: #OpentalkMonitor #defaultString: 'Opentalk Monitor' #catalogID: #opentalktools)
#min: #(#{Core.Point} 400 400 )
#max: #(#{Core.Point} 0 0 )
#bounds: #(#{Graphics.Rectangle} 275 190 948 690 )
#flags: 4
#menu: #menuBar )
#component:
#(#{UI.SpecCollection}
#collection: #(
#(#{UI.SubCanvasSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 0 0 0 1 -2 0.333333 )
#name: #components
#flags: 0
#majorKey: #{ComponentListSubcanvas}
#minorKey: #windowSpec
#clientKey: #componentListSubcanvas )
#(#{UI.ResizingSplitterSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 -2 0.333333 0 1 2 0.333333 )
#name: #compEvsSplitter
#horizontal: true
#minAboveSize: 30
#minBelowSize: 30
#aboveWidgets: 'components'
#belowWidgets: 'eventLog' )
#(#{UI.CompositeSpecCollection}
#collection: #(
#(#{UI.ResizingSplitterSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 -2 0.5 0 1 2 0.5 )
#name: #evsLogSplitter
#horizontal: true
#minAboveSize: 30
#minBelowSize: 30
#aboveWidgets: 'events'
#belowWidgets: 'log' )
#(#{UI.SubCanvasSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 2 0.5 0 1 0 1 )
#name: #log
#flags: 0
#majorKey: #{EventListSubcanvas}
#minorKey: #windowSpec
#clientKey: #eventListSubcanvas )
#(#{UI.SubCanvasSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 0 0 0 1 -2 0.5 )
#name: #events
#flags: 0
#majorKey: #{EventSubscriptionSubcanvas}
#minorKey: #windowSpec
#clientKey: #eventSubscriptionSubcanvas ) )
#compositeSpec:
#(#{UI.CompositeSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 2 0.333333 0 1 0 1 )
#name: #eventLog ) ) ) ) )</body>
</methods>
<methods>
<class-id>Opentalk.OpentalkMonitor class</class-id> <category>resources</category>
<body package="Opentalk-Tools-Monitor" selector="menuBar">menuBar
"Tools.MenuEditor new openOnClass: self andSelector: #menuBar"
<resource: #menu>
^#(#{UI.Menu} #(
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_Monitor #defaultString: '&Monitor' #catalogID: #opentalktools)
#nameKey: #monitor
#submenu: #(#{UI.Menu} #(
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_Refresh #defaultString: '&Refresh' #catalogID: #opentalktools)
#nameKey: #refreshMonitor
#value: #refreshMonitor ) ) #(1 ) nil ) )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_BrokerAdaptor #defaultString: '&Broker/Adaptor' #catalogID: #opentalktools)
#submenu: #(#{UI.Menu} #(
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #Star_t #defaultString: 'Star&t' #catalogID: #opentalktools)
#nameKey: #startComponent
#value: #startComponent )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #Sto_p #defaultString: 'Sto&p' #catalogID: #opentalktools)
#nameKey: #stopComponent
#value: #stopComponent )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #I_ncrementPort #defaultString: 'I&ncrement port' #catalogID: #opentalktools)
#nameKey: #incrementComponentPort
#value: #incrementComponentPort )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #D_ecrementPort #defaultString: 'D&ecrement port' #catalogID: #opentalktools)
#nameKey: #decrementComponentPort
#value: #decrementComponentPort )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_Inspect #defaultString: '&Inspect' #catalogID: #opentalktools)
#nameKey: #inspectComponent
#value: #inspectComponent )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_Remove #defaultString: '&Remove' #catalogID: #opentalktools)
#nameKey: #removeComponent
#value: #removeComponent ) ) #(2 2 1 1 ) nil ) )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #Event_Subscription #defaultString: 'Event &Subscription' #catalogID: #opentalktools)
#submenu: #(#{UI.Menu} #(
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_SelectAll #defaultString: '&Select all' #catalogID: #opentalktools)
#nameKey: #selectAllSubscriptions
#value: #selectAllSubscriptions )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_UnselectAll #defaultString: '&Unselect all' #catalogID: #opentalktools)
#nameKey: #unselectAllSubscriptions
#value: #unselectAllSubscriptions ) ) #(2 ) nil ) )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #Event_Log #defaultString: 'Event &Log' #catalogID: #opentalktools)
#submenu: #(#{UI.Menu} #(
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_ClearAll #defaultString: '&Clear all' #catalogID: #opentalktools)
#nameKey: #clearAllLogItems
#value: #clearAllLogItems )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #_InspectItem #defaultString: '&Inspect item' #catalogID: #opentalktools)
#nameKey: #inspectLogItem
#value: #inspectLogItem ) ) #(2 ) nil ) ) ) #(4 ) nil ) decodeAsLiteralArray</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas class</class-id> <category>resources</category>
<body package="Opentalk-Tools-Monitor" selector="logMenu">logMenu
"Tools.MenuEditor new openOnClass: self andSelector: #logMenu"
<resource: #menu>
^#(#{UI.Menu} #(
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #ClearAll #defaultString: 'Clear All' #catalogID: #opentalktools)
#nameKey: #clearAll
#value: #clearAllLogItems )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #InspectItem #defaultString: 'Inspect Item' #catalogID: #opentalktools)
#nameKey: #inspectItem
#value: #inspectLogItem ) ) #(2 ) nil ) decodeAsLiteralArray</body>
</methods>
<methods>
<class-id>Opentalk.EventListSubcanvas class</class-id> <category>interface specs</category>
<body package="Opentalk-Tools-Monitor" selector="windowSpec">windowSpec
"Tools.UIPainter new openOnClass: self andSelector: #windowSpec"
<resource: #canvas>
^#(#{UI.FullSpec}
#window:
#(#{UI.WindowSpec}
#label: #(#{Kernel.UserMessage} #key: #EventListSubcanvas #defaultString: 'Event List Subcanvas' #catalogID: #opentalktools)
#min: #(#{Core.Point} 742 147 )
#max: #(#{Core.Point} 742 147 )
#bounds: #(#{Graphics.Rectangle} 172 395 914 542 ) )
#component:
#(#{UI.SpecCollection}
#collection: #(
#(#{UI.SequenceViewSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 0 0 -132 1 0 1 )
#name: #selectionInList
#flags: 15
#model: #selectionInList
#menu: #logMenu
#useModifierKeys: true
#selectionType: #highlight )
#(#{UI.CompositeSpecCollection}
#collection: #(
#(#{UI.CheckBoxSpec}
#layout: #(#{Core.Point} 0 0 )
#name: #classnameCheckBox
#flags: 32
#model: #classnameFilterAdaptor
#label: #(#{Kernel.UserMessage} #key: #className #defaultString: 'class name' #catalogID: #opentalktools) )
#(#{UI.CheckBoxSpec}
#layout: #(#{Core.Point} 0 75 )
#name: #eventCheckBox
#flags: 32
#model: #eventFilterAdaptor
#label: #(#{Kernel.UserMessage} #key: #event #defaultString: 'event' #catalogID: #opentalktools) )
#(#{UI.CheckBoxSpec}
#layout: #(#{Core.Point} 0 60 )
#name: #componentCheckBox
#flags: 32
#model: #componentFilterAdaptor
#label: #(#{Kernel.UserMessage} #key: #component #defaultString: 'component' #catalogID: #opentalktools) )
#(#{UI.CheckBoxSpec}
#layout: #(#{Core.Point} 0 45 )
#name: #protocolTagCheckBox
#flags: 32
#model: #protocolTagFilterAdaptor
#label: #(#{Kernel.UserMessage} #key: #protocolTag #defaultString: 'protocol tag' #catalogID: #opentalktools) )
#(#{UI.CheckBoxSpec}
#layout: #(#{Core.Point} 0 30 )
#name: #portCheckBox
#flags: 32
#model: #portFilterAdaptor
#label: #(#{Kernel.UserMessage} #key: #port #defaultString: 'port' #catalogID: #opentalktools) )
#(#{UI.CheckBoxSpec}
#layout: #(#{Core.Point} 0 15 )
#name: #hostAddressCheckBox
#flags: 32
#model: #hostAddressFilterAdaptor
#label: #(#{Kernel.UserMessage} #key: #hostAddress #defaultString: 'host address' #catalogID: #opentalktools) ) )
#compositeSpec:
#(#{UI.CompositeSpec}
#layout: #(#{Graphics.LayoutFrame} -120 1 10 0 -10 1 -10 1 )
#name: #filterGroup ) )
#(#{UI.GroupBoxSpec}
#layout: #(#{Graphics.LayoutFrame} -130 1 0 0 0 1 0 1 )
#name: #GroupBox1 ) ) ) )</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionSubcanvas class</class-id> <category>interface specs</category>
<body package="Opentalk-Tools-Monitor" selector="windowSpec">windowSpec
"Tools.UIPainter new openOnClass: self andSelector: #windowSpec"
<resource: #canvas>
^#(#{UI.FullSpec}
#window:
#(#{UI.WindowSpec}
#label: #(#{Kernel.UserMessage} #key: #EventSubscriptionSubcanvas #defaultString: 'Event Subscription Subcanvas' #catalogID: #opentalktools)
#min: #(#{Core.Point} 485 147 )
#max: #(#{Core.Point} 485 147 )
#bounds: #(#{Graphics.Rectangle} 298 315 783 462 ) )
#component:
#(#{UI.SpecCollection}
#collection: #(
#(#{UI.SequenceViewSpec}
#layout: #(#{Graphics.LayoutFrame} 0 0 0 0 -132 1 0 1 )
#name: #eventSubscriptionSIL
#model: #eventSubscriptionSIL
#menu: #subscriptionMenu
#multipleSelections: true
#useModifierKeys: true
#selectionType: #checkMark )
#(#{UI.GroupBoxSpec}
#layout: #(#{Graphics.LayoutFrame} -130 1 0 0 0 1 0 1 )
#name: #GroupBox1 ) ) ) )</body>
</methods>
<methods>
<class-id>Opentalk.EventSubscriptionSubcanvas class</class-id> <category>resources</category>
<body package="Opentalk-Tools-Monitor" selector="subscriptionMenu">subscriptionMenu
"Tools.MenuEditor new openOnClass: self andSelector: #subscriptionMenu"
<resource: #menu>
^#(#{UI.Menu} #(
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #SelectAll #defaultString: 'Select All' #catalogID: #opentalktools)
#nameKey: #selectAll
#value: #selectAllSubscriptions )
#(#{UI.MenuItem}
#rawLabel: #(#{Kernel.UserMessage} #key: #UnselectAll #defaultString: 'Unselect All' #catalogID: #opentalktools)
#nameKey: #unselectAll
#value: #unselectAllSubscriptions ) ) #(2 ) nil ) decodeAsLiteralArray</body>
</methods>
<methods>
<class-id>Tools.VisualLauncher</class-id> <category>opentalk</category>
<body package="Opentalk-Tools-Monitor" selector="toolsOpentalkMonitor">toolsOpentalkMonitor
<menuItem: 'Monitor'
nameKey: #opentalkMonitor
menu: #(#menuBar #tools #opentalk)
position: 20.50>
Opentalk.OpentalkMonitor open</body>
</methods>
<initialize>
<class-id>Opentalk.OpentalkMonitor</class-id>
</initialize>
<do-it>"Imported Classes:"</do-it>
<do-it>self error: 'Attempting to file-in parcel imports. Choose terminate or close'</do-it>
<class>
<name>Object</name>
<environment>Core</environment>
<super></super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Kernel-Objects</category>
<attributes>
<package>Kernel-Objects</package>
</attributes>
</class>
<class>
<name>ApplicationModel</name>
<environment>UI</environment>
<super>UI.Model</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>builder uiSession eventHandlers </inst-vars>
<class-inst-vars>savedWindowInformation </class-inst-vars>
<imports></imports>
<category>UIBuilder-Framework</category>
<attributes>
<package>UIBuilder-Framework</package>
</attributes>
</class>
<class>
<name>VisualLauncher</name>
<environment>Tools</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>menuBar toolBar textCollector toolDock </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Tools-Misc</category>
<attributes>
<package>Tools-Misc</package>
</attributes>
</class>
<class>
<name>FilterableListSubcanvas</name>
<environment>Opentalk</environment>
<super>UI.ApplicationModel</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>selectionInList selectionHolder selectionIndexHolder unfilteredList filteredList filter filters filterList filterKey </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Tools-Basic</category>
<attributes>
<package>Opentalk-Tools-Basic</package>
</attributes>
</class>
<class>
<name>Message</name>
<environment>Core</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>selector args </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Kernel-Methods</category>
<attributes>
<package>Kernel-Methods</package>
</attributes>
</class>
<class>
<name>GenericProtocol</name>
<environment>Opentalk</environment>
<super>Core.EventManager</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>state </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk-Core</category>
<attributes>
<package>Opentalk-Core</package>
</attributes>
</class>
<class>
<name>MessageSend</name>
<environment>Core</environment>
<super>Core.Message</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>receiver </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Kernel-Methods</category>
<attributes>
<package>Kernel-Methods</package>
</attributes>
</class>
<class>
<name>EventCollector</name>
<environment>Protocols</environment>
<super>Protocols.EventPrinter</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>events baseClockValue </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Opentalk</category>
<attributes>
<package>Protocols-Common</package>
</attributes>
</class>
</st-source>