대충 이런 걸(링크) 만들었는데, 의견 물어볼 데가 없어서 힘들다:
다른 건 그렇다 치고, 기본적으로 모든 걸 'hot observable'로 만들었는데, 그게 맞는 설계인지 확신이 없다.
잠깐 API로 설정 가능하게 했다가 무슨 의미인가 싶어서 원복하고 릴리즈했는데, 저런 라이브러리에서 'cold observable'을 써야 하거나 그게 유리한 경우가 뭐가 있을지 모르겠음.
혹시 Rx 잘 아는 사람 있으면 의견 환영한다.
대충 이런 걸(링크) 만들었는데, 의견 물어볼 데가 없어서 힘들다:
다른 건 그렇다 치고, 기본적으로 모든 걸 'hot observable'로 만들었는데, 그게 맞는 설계인지 확신이 없다.
잠깐 API로 설정 가능하게 했다가 무슨 의미인가 싶어서 원복하고 릴리즈했는데, 저런 라이브러리에서 'cold observable'을 써야 하거나 그게 유리한 경우가 뭐가 있을지 모르겠음.
혹시 Rx 잘 아는 사람 있으면 의견 환영한다.
어르신 여기엔 무슨일로..
그냥 열때마다 옵저브하는 대상의 새 스트림이 필요하면 쓰시면 되지요
응용 프로그램이면 그냥 필요한지 판단해서 온도 맞출 건데, 이건 라이브러리임. 그리고 집계 같은 거 할 때 콜드로 하면 꼬이니까 그냥 무조건 다 핫으로 통일! 이랬는데 그게 맞는 방향인지 모르겠다는게 핵심이다.
어떤 상황인지는 모르겠는데 일반적으로 콜드는 옵저버블 정의 안쪽에서 스트림이 생기고 핫은 밖이나 서브젝트를 탈텐데 꼬일 염려는 문맥이 한정되는 콜드가 덜 하지 않나요 코드를 봐야 알듯
님이 원하시는 동작의 생명주기가 궁금함
README에 있는 예제 보면 좀 감이 오려나? 콜드이면 꼬인다는 건, 설명하면 예를들어서 'counting crows' 예제 같이 이력을 가지고 집계를 낸다던지 하는 경우에, 구독 시점에 따라 값이 달라지는 문제거든. 저 라이브러리는 내부에서 무조건 구독을 하나 해서 값을 캐시해서 반환하는 구조라서, 그런 경우에 콜드면 사용자가 구독한 내용하고 다른 값이 나올 수 있다.
"counting crows"에제에서 counting.crows는 2인데, 내부에서 관리하는 옵저버블이 콜드일 경우에 rv.observe(counting.crows).subscribe(...) 이렇게 딴 값하고 비교하면 언제 구독했냐에 따라 그게 최신이 2가 아닐 수도 있는 문제다.
이건 핫 콜드의 문제라기보다 싱글턴에 가까운 스트림이 필요한걸로 이해해도 되나요? 제가 봤을때는 그런데
싱글턴이면 굳이 콜드일 필요도 없고
ㅇㅇ 그래서 싱글턴 느낌으로 그냥 무조건 내부에 share/refcount 하나씩 박았는데 그렇게 하면 쓰는 쪽에서 안좋은 게 뭐가 있을지가 판단이 애매한게 핵심임.
다 핫이면, 계속 구독상태라는 뜻으로 아는데 그럼 메모리 문제 생길 수 있지 않나 싶음.
그런데 변수를 다루는 거면 핫일 수 밖에 없을거 같긴하네요.
혹시 비동기 로드나 스트림 관련된 기능이 있다면 모를까.
그래서 좀 꼼수를 동원했는데, 무려 destructor 동적 오버라이딩 해서 해제하긴 함 -ㅅ-; 물론 명시적으로도 가능.
아 ㅋㅋ 그럼 상관 없을듯?
암튼, rx 좋아해서 별찍어드림
고맙다 ㅎㅎ