使用RxCpp构造Observer / Observable模式

时间:2017-06-12 10:19:44

标签: c# c++ system.reactive observer-pattern rxcpp

我正在尝试在Rx-cpp中实施var url = URLComponents() url.queryItemsDictionary = ["firstName" : "John", "lastName" : "Appleseed"] 模式。这些tutorialRx.Net中非常有趣,关于某人如何做到这一点。

在这个observer/observable示例中,我们必须覆盖特定的C#

interfaces

据我了解,在public interface IObserver<in T> { void OnCompleted(); void OnError(Exception error); void OnNext(T value); } public interface IObservable<out T> { IDisposable Subscribe(IObserver<T> observer); } 中没有这么方便。那么,是否可以向我提供一些标题示例(Rx-cpp / myObservable.h),类似于上面的myObserver.h,我可以将其用作定义相同通信模式的指导?

非常感谢任何帮助, 谢谢!

编辑1: 感谢interfaces,我正在尝试进行面向类的沟通。到目前为止,我有可观察模式的代码。我想要的是定义一个观察者列表,这些观察者将附加到observable中,当调用@zentrunix时,应该通知这些观察者。然而,缺少部分。

  1. 当调用OnNext函数时,我如何subscribe()对这些观察者(Rx::subscribers<int>)进行调查。
  2. 我怎样才能myObservable::Subscribe()
  3. 最后,多个unsubscribe()观察员中的相应o.subscribe(onNext, onEnd);将如何?是否可以构建相应的onNext类? (再次受here启发)
  4. 很抱歉要问这个组织有意义吗?到目前为止,我正在使用此tutorial中提供的体系结构,这就是我对此任务着迷的原因。我发现它是参与myObserver的一种方式。任何评论都非常感谢。(再次对不起我的无知。)

    RxCpp

1 个答案:

答案 0 :(得分:3)

下面的RxCpp中的一个非常简单的例子。 但是(至少)有一个警告:典型的RxCpp代码大量使用lambdas,我非常不喜欢。

我也试图在互联网上找到文档和教程,但找不到任何文档和教程。我对线程模型的解释特别感兴趣。

如果您愿意浏览代码和Doxygen文档,RxCpp GitHub站点中有很多示例。

#include <iostream>
#include <exception>

#include "rxcpp/rx.hpp"
namespace rx = rxcpp;

static void onNext(int n) { std::cout << "* " << n << "\n"; }
static void onEnd() { std::cout << "* end\n"; }

static void onError(std::exception_ptr ep)
{
  try { std::rethrow_exception(ep); }
  catch (std::exception& e) { std::cout << "* exception " << e.what() << '\n'; }
}

static void observableImpl(rx::subscriber<int> s)
{
  s.on_next(1);
  s.on_next(2);
  s.on_completed();
}

int main()
{
  auto o = rxcpp::observable<>::create<int>(observableImpl);
  std::cout << "*\n";
  o.subscribe(onNext, onEnd);
}