From 5371f317e3250b6247275d4eaffa012230d0bf4e Mon Sep 17 00:00:00 2001 From: Dale Henrichs Date: Sat, 29 Jul 2023 18:45:26 -0700 Subject: [PATCH] Issue #4: starting work on client forwarder cache --- .../README.md | 0 .../instance/defaultAction.st | 5 +++++ .../instance/performSendNoForwarder..st | 11 +++++++++++ .../instance/session..st | 3 +++ .../instance/session.st | 3 +++ .../methodProperties.json | 8 ++++++++ .../properties.json | 14 ++++++++++++++ .../instance/_serverExecuteString.debugMode..st | 11 ++++++++++- .../instance/topezServerProxy.st | 10 +++++++++- 9 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/README.md create mode 100644 src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/defaultAction.st create mode 100644 src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/performSendNoForwarder..st create mode 100644 src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session..st create mode 100644 src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session.st create mode 100644 src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/methodProperties.json create mode 100644 src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/properties.json diff --git a/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/README.md b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/defaultAction.st b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/defaultAction.st new file mode 100644 index 00000000..1947b394 --- /dev/null +++ b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/defaultAction.st @@ -0,0 +1,5 @@ +as yet unclassified +defaultAction + | result | + result := self performSendNoForwarder: [ self resume: (Array with: #resume with: nil) ]. + self resume: (Array with: #resume with: result) \ No newline at end of file diff --git a/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/performSendNoForwarder..st b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/performSendNoForwarder..st new file mode 100644 index 00000000..fe584ea2 --- /dev/null +++ b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/performSendNoForwarder..st @@ -0,0 +1,11 @@ +as yet unclassified +performSendNoForwarder: noForwarderBlock + | forwarder clientForwarderOop selector args messageArgs | + args := self tag args. + clientForwarderOop := session asOopType: (args at: 1). + forwarder := session clientObjectForwardedFrom: clientForwarderOop. + forwarder == nil + ifTrue: [ ^ noForwarderBlock value ]. + selector := args at: 3. + messageArgs := args at: 4. + ^ forwarder performFromServer: selector with: messageArgs using: session \ No newline at end of file diff --git a/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session..st b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session..st new file mode 100644 index 00000000..597871c9 --- /dev/null +++ b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session..st @@ -0,0 +1,3 @@ +as yet unclassified +session: aGciSession + session := aGciSession \ No newline at end of file diff --git a/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session.st b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session.st new file mode 100644 index 00000000..5a3738a2 --- /dev/null +++ b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/instance/session.st @@ -0,0 +1,3 @@ +as yet unclassified +session + ^ session \ No newline at end of file diff --git a/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/methodProperties.json b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/methodProperties.json new file mode 100644 index 00000000..d7f2fc59 --- /dev/null +++ b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "defaultAction" : "dkh 1/11/2014 15:01", + "performSendNoForwarder:" : "dkh 1/11/2014 15:00", + "session" : "dkh 11/18/2012 08:18", + "session:" : "dkh 11/18/2012 08:19" } } diff --git a/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/properties.json b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/properties.json new file mode 100644 index 00000000..4386975d --- /dev/null +++ b/src/GsDevKit_stones-Tode.package/GsClientForwarderSendNotification.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "GsDevKit_stones-Tode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "session" ], + "name" : "GsClientForwarderSendNotification", + "pools" : [ + ], + "super" : "Notification", + "type" : "normal" } diff --git a/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/_serverExecuteString.debugMode..st b/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/_serverExecuteString.debugMode..st index 5d90a853..81cfa76e 100644 --- a/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/_serverExecuteString.debugMode..st +++ b/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/_serverExecuteString.debugMode..st @@ -14,4 +14,13 @@ _serverExecuteString: executeString debugMode: debugMode [ self session nbExecute: doitString ] on: GsErrorNotification do: [ :ex | self error: 'Unable to execute #executeString: on tODE server' ]. - ^ self session nbResult \ No newline at end of file + [ ^ self session nbResult ] + on: GciError + do: [ :ex | + ex gsNumber = 2336 + ifTrue: [ +self halt. "need to make sure that we are using the client forwarder cache for look up" + GsClientForwarderSendNotification new + session: self; + tag: ex gciErrSType; + signal ] ] \ No newline at end of file diff --git a/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/topezServerProxy.st b/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/topezServerProxy.st index 1159fdb7..fdbf5955 100644 --- a/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/topezServerProxy.st +++ b/src/GsDevKit_stones-Tode.package/TDExternalSessionClient.class/instance/topezServerProxy.st @@ -18,14 +18,22 @@ topezServerProxy error: 'Unable to log into server:' , ex description , 'with: ' , todeServerCreationString printString ] ]. +" + ^ {(topezServer asOop). + transcriptClientForwarderOop. + (Reflection oopOf: topezClientClientForwarder). + (TodeObjectSerializer protocolSignatureArray). + (self todeServerAPIVersionString)} +" resultArray := STON fromString: jsonString. +resultArray halt. "need to make sure that the clientForwarderCache is updated correctly" topezServerOop := resultArray at: 1. topezClientOopType := resultArray at: 3. topezServerProxy := topezServerOop. (resultArray at: 2) ifNotNil: [ :transcriptOop | transcriptOopType := transcriptOop. - self clientForwarderCache at: transcriptOopType put: Transcript ]. + self clientForwarderCache at: transcriptOopType put: GsFile stdout ]. self clientForwarderCache at: topezClientOopType put: self. resultArray size > 3 ifTrue: [