SwiftDAP

用于 Microsoft 调试适配器协议 的 Swift SDK

注意:仍处于 alpha 开发阶段 - 功能不完整!

用户指南

这是使用提供的 DebugAdapter 的最基本方法。.start() 告诉适配器开始监听来自传递到 DebugAdapter 构造函数的 input 的传入 DAP 消息。

import DebugAdapterProtocol

let input = FileHandle.standardInput
let output = FileHandle.standardOutput

DebugAdapter(input, output).start()

此时,它唯一会做的就是监听 DAP 消息并解析它们,但它不会对它们做任何处理。因此,您必须实现一个 ProtocolMessageHandler 来处理这些消息。

class ExampleHandler: ProtocolMessageHandler {
  func handle(message: ProtocolMessage) {
    // do something about the incoming message
  }
}

您可以将一个工厂方法传递给 DebugAdapter 来创建您的消息处理程序,如下所示:

DebugAdapter(input, output)
  .withMessageHandler { sender in ExampleHandler(...) }
  .start()

工厂方法中的 sender 参数是一个 ProtocolMessageSender,它本质上是一个接受 ProtocolMessage 并通过 DebugAdapter 发送它的函数。 如果您想响应请求,您可能需要在 ProtocolMessageHandler 中使用它。

完整示例

import DebugAdapterProtocol

class MessageHandler: ProtocolMessageHandler {
  let send: ProtocolMessageSender

  init(_ send: ProtocolMessageSender) {
    self.send = send
  }

  func handle(message: ProtocolMessage) {
    switch message {
    case .request(seq: let seq, request: let request):
      send(.response(seq: seq, response: /* ... */))
    default:
      break
    }
  }
}

main() {
  DebugAdapter(input, output)
    .withMessageHandler { sender in MessageHandler(sender) }
    .start()
}