@@ -18,6 +18,22 @@ GtLOnDemandMcpServer class >> onRemoveUniqueInstance: anInstance [
1818 anInstance onRemovedAsUniqueInstance
1919]
2020
21+ { #category : #accessing }
22+ GtLOnDemandMcpServer class >> uniqueInstance [
23+ ^ uniqueInstance ifNil: [ uniqueInstance := self new start ]
24+ ]
25+
26+ { #category : #accessing }
27+ GtLOnDemandMcpServer class >> uniqueInstanceOnPort: anInteger [
28+
29+ (self hasUniqueInstance and : [ self uniqueInstance port ~= anInteger ]) ifTrue:
30+ [ self error: ' An instance on port ' , self uniqueInstance port asString, ' already started' ].
31+ ^ uniqueInstance ifNil:
32+ [ uniqueInstance := self new
33+ port: anInteger;
34+ start ]
35+ ]
36+
2137{ #category : #private }
2238GtLOnDemandMcpServer >> findAvailablePort [
2339 | socket |
@@ -26,12 +42,6 @@ GtLOnDemandMcpServer >> findAvailablePort [
2642 ensure : [ socket ifNotNil: [ socket closeAndDestroy ] ]
2743]
2844
29- { #category : #initialization }
30- GtLOnDemandMcpServer >> initialize [
31- super initialize.
32- self start
33- ]
34-
3545{ #category : #testing }
3646GtLOnDemandMcpServer >> isRunning [
3747 ^ server notNil and : [ server isRunning ]
@@ -49,7 +59,12 @@ GtLOnDemandMcpServer >> onRemovedAsUniqueInstance [
4959
5060{ #category : #accessing }
5161GtLOnDemandMcpServer >> port [
52- ^ port
62+ ^ port ifNil: [ port := self findAvailablePort ]
63+ ]
64+
65+ { #category : #accessing }
66+ GtLOnDemandMcpServer >> port: anInteger [
67+ port := anInteger
5368]
5469
5570{ #category : #accessing }
@@ -60,9 +75,8 @@ GtLOnDemandMcpServer >> server [
6075{ #category : #starting }
6176GtLOnDemandMcpServer >> start [
6277 self isRunning ifTrue: [ ^ self ].
63- port := self findAvailablePort.
6478 server := GtLMcpServer new
65- port: port;
79+ port: self port;
6680 addTools: GtLTools gt;
6781 start.
6882 GtLOnDemandMcpServerStartupSignal new
0 commit comments