receiveConnection method

Future<void> receiveConnection(
  1. DuplexConnection duplexConn
)

Implementation

Future<void> receiveConnection(DuplexConnection duplexConn) async {
  RSocketRequester? rsocketRequester;
  duplexConn.receiveHandler = (chunk) {
    for (var frame in parseFrames(chunk)) {
      var header = frame.header;
      if (header.type == frame_types.SETUP) {
        var setupFrame = frame as SetupFrame;
        var connectionSetupPayload = ConnectionSetupPayload()
          ..keepAliveInterval = setupFrame.keepAliveInterval
          ..keepAliveMaxLifetime = setupFrame.keepAliveMaxLifetime
          ..metadataMimeType = setupFrame.metadataMimeType
          ..dataMimeType = setupFrame.dataMimeType
          ..data = setupFrame.payload?.data
          ..metadata = setupFrame.payload?.data;
        var temp =
            RSocketRequester('responder', connectionSetupPayload, duplexConn);
        var responder = socketAcceptor(connectionSetupPayload, temp);
        if (responder == null) {
          duplexConn.close();
          break;
        } else {
          temp.responder = responder;
          rsocketRequester = temp;
        }
      } else {
        rsocketRequester?.receiveFrame(frame);
      }
    }
  };
  duplexConn.init();
}