﻿⍝ Create a Simple RPC Server process
)clear
]load Tool
Tool.Prepare 'Conga'
solns←'C:\Users\mkrom\Dropbox\Dyalog17\SA2\Solutions'
⎕SE.SALT.Load solns,'PrimeServer'
⎕SE.SALT.Load solns,'StartPrimeServer'
⎕VR 'StartPrimeServer'
⎕LX←'StartPrimeServer'
)save C:\temp\StartPrimeServer -force
wsid←'C:\temp\StartPrimeServer'
]load APLProcess
srv←⎕NEW APLProcess (wsid 'MAXWS=2G' 0)
clt←Conga.Clt 'localhost' 8123
≢p←clt.SendRecv 'Primes' 10000
]runtime "≢p←clt.SendRecv 'Primes' 10000"
↑10 ¯10↑¨⊂p
srv.HasExited
clt.SendRecv 'ShutDown' 0
srv.HasExited

⍝ low-level example
)xload C:\Users\mkrom\Dropbox\Dyalog17\SA2\StartRPCServer
]load C:\Users\mkrom\Dropbox\Dyalog17\SA2\StartRPCServer2
)ed StartRPCServer
⍝ NB port number
)save

]load APLProcess
wsid←'C:\Users\mkrom\Dropbox\Dyalog17\SA2\StartRPCServer'
ps1←⎕NEW APLProcess (wsid 'MAXWS=1G PORT=8123' 0)
ps2←⎕NEW APLProcess (wsid 'MAXWS=1G PORT=8124' 0)
cl1←Conga.Clt 'localhost' 8123
cl2←Conga.Clt 'localhost' 8124
]runtime "(cl1 cl2).SendRecv ↓(⊂'CountPrimes),⍪(1 5000)(5001 10000)"
]runtime "PrimeServer.CountPrimes 1 10000"





	




