use crate::codec::BaseCodec;
use crate::codec::Rust2DartMessageTrait;
use crate::generalized_isolate::SendableChannelHandle;
use std::marker::PhantomData;
pub(crate) struct StreamSinkCloser<Rust2DartCodec: BaseCodec> {
sendable_channel_handle: SendableChannelHandle,
_phantom_data: PhantomData<Rust2DartCodec>,
}
impl<Rust2DartCodec: BaseCodec> StreamSinkCloser<Rust2DartCodec> {
pub fn new(sendable_channel_handle: SendableChannelHandle) -> Self {
Self {
sendable_channel_handle,
_phantom_data: PhantomData,
}
}
}
impl<Rust2DartCodec: BaseCodec> Drop for StreamSinkCloser<Rust2DartCodec> {
fn drop(&mut self) {
super::stream_sink::sender(&self.sendable_channel_handle)
.send_or_warn(Rust2DartCodec::encode_close_stream().into_dart_abi())
}
}