2016-07-21 8 views
0

나는 Stream[F,A]을 가지고 있으며, fs2을 인식하지 못하는 코드베이스의 일부분에 의해 소비되기 위해서 다음의 "원시 스트리밍 인터페이스"로 변환해야합니다 :`Stream`을 명령형으로 변환하는 방법

trait PrimitiveStreamRepr[F[_]] { 
    def read: F[Option[A]] 
    def close: F[Unit] 
} 

어떻게하면됩니까? 아마도 대답은 그러한 변환이 불가능하고 자바 스트리밍 인터페이스를 fs2.Stream으로 랩핑하면 더 이상 "자바 스타일"스트리밍 인터페이스로 "변환"될 수 있습니다. Stream을 버블 링해야합니다. 최상위 레벨에서는 파이프를 Sinkrun에 연결할 수 있습니다.

답변

0

본질적으로 당신이 제안하는 것은 무엇입니까?

스트림의 스테핑이 여전히 구현되어 있으므로 PrimitiveStreamRepr 전체가 Stream으로 래핑 될 경우 가능한 것이 좋습니다.

레거시 코드와의 인터페이싱은 다양한 대기열 및 신호에 대한 async._ 패키지를 참조하십시오.

죄송합니다. 더 이상 도움을 드릴 수 없으므로 해결하려고하는 기존 코드에 particullar 사례가 필요합니다.

본질적으로 fs2._는 레거시 코드와 잘 통합되며 동기화 또는 비동기인지 여부는 중요하지 않습니다. 그러나 우리는 결국 비 리소스 세이프 코드로 끝날 내부 기능을 드러내지 않습니다.