server-session-unary.swift 1.1 KB

123456789101112131415161718192021222324
  1. // {{ method|methodDescriptorName }} (Unary)
  2. {{ access }} final class {{ .|session:file,service,method }} : {{ .|service:file,service }}Session {
  3. private var provider : {{ .|provider:file,service }}
  4. /// Create a session.
  5. fileprivate init(handler:gRPC.Handler, provider: {{ .|provider:file,service }}) {
  6. self.provider = provider
  7. super.init(handler:handler)
  8. }
  9. /// Run the session. Internal.
  10. fileprivate func run(queue:DispatchQueue) throws {
  11. try handler.receiveMessage(initialMetadata:initialMetadata) {(requestData) in
  12. if let requestData = requestData {
  13. let requestMessage = try {{ method|input }}(serializedData:requestData)
  14. let replyMessage = try self.provider.{{ method|methodDescriptorName|lowercase }}(request:requestMessage, session: self)
  15. try self.handler.sendResponse(message:replyMessage.serializedData(),
  16. statusCode:self.statusCode,
  17. statusMessage:self.statusMessage,
  18. trailingMetadata:self.trailingMetadata)
  19. }
  20. }
  21. }
  22. }