| // Copyright (c) 2024, 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. | |
| #include "include/dart_api_dl.h" | |
| #import <Foundation/NSObject.h> | |
| #import <Foundation/NSStream.h> | |
| /// Helper class to adapt a Dart stream into a `NSInputStream`. | |
| @interface DOBJCDartInputStreamAdapter : NSInputStream <NSStreamDelegate> | |
| /// Creates the adapter. | |
| /// @param sendPort A port to that is will receive two types of messages: | |
| /// -1 => The `NSInputStream` has been closed and the port can be closed. | |
| /// _ => The number of types being required in a `read:maxLength` call. | |
| + (instancetype)inputStreamWithPort:(Dart_Port)sendPort; | |
| - (NSUInteger)addData:(NSData *)data; | |
| - (void)setDone; | |
| - (void)setError:(NSError *)error; | |
| @end | |
| /// Helper class that contains a weak reference to a `DOBJCDartInputStreamAdapter`. | |
| @interface DOBJCDartInputStreamAdapterWeakHolder : NSObject | |
| + (instancetype)holderWithInputStreamAdapter:(DOBJCDartInputStreamAdapter *)adapter; | |
| @property(nonatomic, readonly, weak) DOBJCDartInputStreamAdapter* adapter; | |
| @end |