| // Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // Normally, we'd "import <Foundation/Foundation.h>" |
| // but that would mean that ffigen would process every file in the Foundation |
| // framework, which is huge. So just import the headers that we need. |
| #import <Foundation/NSObject.h> |
| #import <Foundation/NSURLSession.h> |
| |
| #include "dart-sdk/include/dart_api_dl.h" |
| |
| /** |
| * The type of message being sent to a Dart port. See CUPHTTPClientDelegate. |
| */ |
| typedef NS_ENUM(NSInteger, MessageType) { |
| ResponseMessage = 0, |
| DataMessage = 1, |
| CompletedMessage = 2, |
| RedirectMessage = 3, |
| FinishedDownloading = 4, |
| WebSocketOpened = 5, |
| WebSocketClosed = 6, |
| }; |
| |
| /** |
| * The configuration associated with a NSURLSessionTask. |
| * See CUPHTTPClientDelegate. |
| */ |
| @interface CUPHTTPTaskConfiguration : NSObject |
| |
| - (id) initWithPort:(Dart_Port)sendPort; |
| |
| @property (readonly) Dart_Port sendPort; |
| |
| @end |
| |
| /** |
| * A delegate for NSURLSession that forwards events for registered |
| * NSURLSessionTasks and forwards them to a port for consumption in Dart. |
| * |
| * The messages sent to the port are contained in a List with one of 3 |
| * possible formats: |
| * |
| * 1. When the delegate receives a HTTP redirect response: |
| * [MessageType::RedirectMessage, <int: pointer to CUPHTTPForwardedRedirect>] |
| * |
| * 2. When the delegate receives a HTTP response: |
| * [MessageType::ResponseMessage, <int: pointer to CUPHTTPForwardedResponse>] |
| * |
| * 3. When the delegate receives some HTTP data: |
| * [MessageType::DataMessage, <int: pointer to CUPHTTPForwardedData>] |
| * |
| * 4. When the delegate is informed that the response is complete: |
| * [MessageType::CompletedMessage, <int: pointer to CUPHTTPForwardedComplete>] |
| */ |
| @interface CUPHTTPClientDelegate : NSObject |
| |
| /** |
| * Instruct the delegate to forward events for the given task to the port |
| * specified in the configuration. |
| */ |
| - (void)registerTask:(NSURLSessionTask *)task |
| withConfiguration:(CUPHTTPTaskConfiguration *)config; |
| @end |