11// Copyright (c) ZeroC, Inc.
22
3- import  Dispatch
43import  Ice
54import  TestCommon
65
6+ 
7+ struct  DispatchWrapper :  Dispatcher  { 
8+     let  dispatcher :  Dispatcher 
9+ 
10+     func  dispatch( _ request:  sending  IncomingRequest)  async  throws  ->  OutgoingResponse  { 
11+         let  startTime  =  ContinuousClock . now
12+         let  response  =  try await  dispatcher. dispatch ( request) 
13+         let  endTime  =  ContinuousClock . now
14+         let  elapsed  =  startTime. duration ( to:  endTime) 
15+ 
16+         let  logger  =  request. current. adapter. getCommunicator ( ) . getLogger ( ) 
17+         logger. print ( " Swift Dispatch: identity= \( request. current. id)  operation= \( request. current. operation)  duration= \( Double ( elapsed. components. attoseconds)  /  1_000_000_000_000_000.0 )  ms " ) 
18+ 
19+         return  response
20+     } 
21+ } 
22+ 
723class  Server :  TestHelperI ,  @unchecked   Sendable  { 
824    override public  func  run( args:  [ String ] )  async  throws  { 
925        //
@@ -13,8 +29,6 @@ class Server: TestHelperI, @unchecked Sendable {
1329        //
1430
1531        let  properties  =  try createTestProperties ( args) 
16-         properties. setProperty ( key:  " Ice.Trace.Dispatch " ,  value:  " 1 " ) 
17-         properties. setProperty ( key:  " Ice.Trace.Network " ,  value:  " 3 " ) 
1832        properties. setProperty ( key:  " Ice.ThreadPool.Server.Size " ,  value:  " 2 " ) 
1933        let  communicator  =  try initialize ( Ice . InitializationData ( properties:  properties) ) 
2034        defer  { 
@@ -35,7 +49,7 @@ class Server: TestHelperI, @unchecked Sendable {
3549        // Make sure we use a separate copy of the properties as the servant modifies them.
3650        let  object  =  ServerManagerI ( registry:  registry,  properties:  properties. clone ( ) ,  helper:  self ) 
3751
38-         try . add ( servant:  object,  id:  Ice . stringToIdentity ( " ServerManager " ) ) 
52+         try . add ( servant:  DispatchWrapper ( dispatcher :   object) ,  id:  Ice . stringToIdentity ( " ServerManager " ) ) 
3953        try await  registry. addObject ( adapter. createProxy ( Ice . stringToIdentity ( " ServerManager " ) ) ) 
4054
4155        let  registryPrx  =  try uncheckedCast ( 
@@ -45,7 +59,7 @@ class Server: TestHelperI, @unchecked Sendable {
4559            type:  Ice . LocatorRegistryPrx. self) 
4660
4761        let  locator  =  ServerLocator ( registry:  registry,  registryPrx:  registryPrx) 
48-         try . add ( servant:  locator,  id:  Ice . stringToIdentity ( " locator " ) ) 
62+         try . add ( servant:  DispatchWrapper ( dispatcher :   locator) ,  id:  Ice . stringToIdentity ( " locator " ) ) 
4963
5064        try . activate ( ) 
5165        serverReady ( ) 
0 commit comments