forked from ObjectProfile/PythonBridge
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathPBExecutionHandler.class.st
More file actions
75 lines (67 loc) · 2.21 KB
/
PBExecutionHandler.class.st
File metadata and controls
75 lines (67 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Class {
#name : #PBExecutionHandler,
#superclass : #LanguageLinkExecutionHandler,
#category : #'PythonBridge-Execution'
}
{ #category : #'gt extensions' }
PBExecutionHandler >> gtDetails [
^ super gtDetails , {
{ #commandQueue . commandQueue }.
{ #mapperFactory . mapperFactory }.
{ #promiseRegistry . promiseRegistry }.
{ #weakRegistry . weakRegistry }.
{ #objectRegistry . objectRegistry }.
}
]
{ #category : #initialization }
PBExecutionHandler >> initializeHandler [
commandQueue := LanguageLinkCommandRegistry new.
mapperFactory := LanguageLinkMapperFactory forExecutionHandler: self.
promiseRegistry := LanguageLinkPromiseRegistry new.
weakRegistry := PBPlatform current weakRegistry.
objectRegistry := LanguageLinkObjectRegistry new.
self communicationHandler
addHandler: [ :msg | self notifyHandler: msg ] forMessageClass: LanguageLinkUpdatePromiseMessage;
addHandler: [ :msg | self notifyErrorHandler: msg ] forMessageClass: LanguageLinkErrorMessage;
addHandler: [ :msg | self notifyCallbackHandler: msg ] forMessageClass: LanguageLinkCallbackMessage
]
{ #category : #'as yet unclassified' }
PBExecutionHandler >> newCommandFactory [
^ PBCommandFactory new
application: self application;
yourself
]
{ #category : #'as yet unclassified' }
PBExecutionHandler >> newCommandStringFactory [
^ PBCommandStringFactory new
application: self application;
yourself
]
{ #category : #accessing }
PBExecutionHandler >> registerObject: aProxyObject [
"Don't register the object. Gets a new proxy every time"
weakRegistry
registerObject: aProxyObject
finalizer: (LanguageLinkRegistryFinalizer
variable: aProxyObject id
executionHandler: self)
]
{ #category : #'private protocol' }
PBExecutionHandler >> registerPromiseForCommand: aCommand [
| promise |
promise := PBPromise new
id: aCommand id;
transformBlock: aCommand transformBlock;
yourself.
aCommand promise: promise.
promiseRegistry addPromise: promise.
^ promise
]
{ #category : #accessing }
PBExecutionHandler >> registryExpression [
^ #registry callWith: #()
]
{ #category : #accessing }
PBExecutionHandler >> removeId: aRemoteProxyId [
^ self registryExpression => #clean callWith: (Array with: aRemoteProxyId)
]