AsyncRequestMaker.swift 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright 2022, gRPC Authors All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. import GRPC
  17. import Logging
  18. /// Implement to provide a method of making requests to a server from a client.
  19. protocol AsyncRequestMaker: Sendable {
  20. /// Initialiser to gather requirements.
  21. /// - Parameters:
  22. /// - config: config from the driver describing what to do.
  23. /// - client: client interface to the server.
  24. /// - requestMessage: Pre-made request message to use possibly repeatedly.
  25. /// - logger: Where to log useful diagnostics.
  26. /// - stats: Where to record statistics on latency.
  27. init(
  28. config: Grpc_Testing_ClientConfig,
  29. client: Grpc_Testing_BenchmarkServiceAsyncClient,
  30. requestMessage: Grpc_Testing_SimpleRequest,
  31. logger: Logger,
  32. stats: StatsWithLock
  33. )
  34. /// Initiate a request sequence to the server.
  35. func makeRequest() async throws
  36. /// Request termination of the request-response sequence.
  37. func requestStop()
  38. }