﻿⍝ Create a Simple RPC Server process
)clear
]load Tool
Tool.Prepare 'Conga'
]load [dyalog]/Samples/Conga/RPCServices/SimpleRPC 
⍝ Customise DocHttpRequest
srv←Conga.Srv 8088 DocHttpRequest
srv.Start

clt←Conga.Clt 'localhost' 8123
clt.SendRecv 'Reverse' 'Hello World'
clt.SendRecv 'Rotate' 6 'Hello World '

)erase SimpleRPC src clt
]load C:\Users\mkrom\Dropbox\Dyalog17\SA2\PrimeServer
)ed PrimeServer
]load C:\Users\mkrom\Dropbox\Dyalog17\SA2\StartRPCServer
⎕VR 'StartRPCServer'
⎕LX←'StartRPCServer'
)save C:\Users\mkrom\Dropbox\Dyalog17\SA2\StartRPCServer -force
wsid←'C:\Users\mkrom\Dropbox\Dyalog17\SA2\StartRPCServer'
]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"





	




