@@ -166,8 +166,11 @@ describe("Acceptor calls method on initiator", () => {
166166} ) ;
167167
168168describe ( "Simultaneous calls without ID collision" , ( ) => {
169- type CommonService = {
169+ type AddService = {
170170 add ( a : number , b : number ) : Promise < number > ;
171+ } ;
172+
173+ type MultiplyService = {
171174 multiply ( a : number , b : number ) : Promise < number > ;
172175 } ;
173176
@@ -178,31 +181,30 @@ describe("Simultaneous calls without ID collision", () => {
178181 const sendSpyA = vi . spyOn ( transportA , "send" ) ;
179182 const sendSpyB = vi . spyOn ( transportB , "send" ) ;
180183
181- // Common service with methods both sides can call
182- const service : CommonService = {
183- add ( a : number , b : number ) : Promise < number > {
184- return Promise . resolve ( a + b ) ;
185- } ,
186- multiply ( a : number , b : number ) : Promise < number > {
187- return Promise . resolve ( a * b ) ;
188- } ,
184+ const addService : AddService = {
185+ add : ( a , b ) => Promise . resolve ( a + b ) ,
189186 } ;
190187
191- const sessionA = new RpcSession < CommonService , CommonService > ( transportA , service , { role : "initiator" } ) ;
192- const sessionB = new RpcSession < CommonService , CommonService > ( transportB , service , { role : "acceptor" } ) ;
188+ const multiplyService : MultiplyService = {
189+ multiply : ( a , b ) => Promise . resolve ( a * b ) ,
190+ } ;
191+
192+ // A provides add, calls B's multiply. B provides multiply, calls A's add.
193+ const sessionA = new RpcSession < MultiplyService , AddService > ( transportA , addService , { role : "initiator" } ) ;
194+ const sessionB = new RpcSession < AddService , MultiplyService > ( transportB , multiplyService , { role : "acceptor" } ) ;
193195
194196 // Initiator calls: should generate wire-level IDs 1, 2, 3...
195197 const initiatorCalls = [
196- sessionA . remote . add ( 1 , 2 ) ,
197- sessionA . remote . add ( 3 , 4 ) ,
198- sessionA . remote . add ( 5 , 6 ) ,
198+ sessionA . remote . multiply ( 1 , 2 ) ,
199+ sessionA . remote . multiply ( 3 , 4 ) ,
200+ sessionA . remote . multiply ( 5 , 6 ) ,
199201 ] ;
200202
201203 // Acceptor calls: should generate wire-level IDs -1, -2, -3...
202204 const acceptorCalls = [
203- sessionB . remote . multiply ( 2 , 3 ) ,
204- sessionB . remote . multiply ( 4 , 5 ) ,
205- sessionB . remote . multiply ( 6 , 7 ) ,
205+ sessionB . remote . add ( 2 , 3 ) ,
206+ sessionB . remote . add ( 4 , 5 ) ,
207+ sessionB . remote . add ( 6 , 7 ) ,
206208 ] ;
207209
208210 await Promise . all ( [ ...initiatorCalls , ...acceptorCalls ] ) ;
@@ -252,24 +254,22 @@ describe("Simultaneous calls without ID collision", () => {
252254 const sendSpyA = vi . spyOn ( transportA , "send" ) ;
253255 const sendSpyB = vi . spyOn ( transportB , "send" ) ;
254256
255- type EchoService = {
256- echo ( value : number ) : Promise < number > ;
257+ const addService : AddService = {
258+ add : ( a , b ) => Promise . resolve ( a + b ) ,
257259 } ;
258260
259- const service : EchoService = {
260- echo ( value : number ) : Promise < number > {
261- return Promise . resolve ( value ) ;
262- } ,
261+ const multiplyService : MultiplyService = {
262+ multiply : ( a , b ) => Promise . resolve ( a * b ) ,
263263 } ;
264264
265- const sessionA = new RpcSession < EchoService , EchoService > ( transportA , service , { role : "initiator" } ) ;
266- const sessionB = new RpcSession < EchoService , EchoService > ( transportB , service , { role : "acceptor" } ) ;
265+ const sessionA = new RpcSession < MultiplyService , AddService > ( transportA , addService , { role : "initiator" } ) ;
266+ const sessionB = new RpcSession < AddService , MultiplyService > ( transportB , multiplyService , { role : "acceptor" } ) ;
267267
268268 // Both sides make 5 calls each
269269 const calls = [ ] ;
270270 for ( let i = 0 ; i < 5 ; i ++ ) {
271- calls . push ( sessionA . remote . echo ( 1000 + i ) ) ;
272- calls . push ( sessionB . remote . echo ( 2000 + i ) ) ;
271+ calls . push ( sessionA . remote . multiply ( 1000 + i , 1 ) ) ;
272+ calls . push ( sessionB . remote . add ( 2000 + i , 0 ) ) ;
273273 }
274274
275275 await Promise . all ( calls ) ;
0 commit comments