a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
63 lines
1.5 KiB
C#
63 lines
1.5 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Reactive.Concurrency;
|
|
using System.Reactive.Disposables;
|
|
using System.Reactive.Linq;
|
|
using System.Reactive.Subjects;
|
|
using RxMouseService;
|
|
|
|
namespace RxMouseServer
|
|
{
|
|
public class MouseService : MarshalByRefObject, IMouseService, IObserver<Point>
|
|
{
|
|
private ReplaySubject<Point> _points;
|
|
|
|
public MouseService()
|
|
{
|
|
_points = new ReplaySubject<Point>();
|
|
}
|
|
|
|
public IObservable<Point> GetPoints()
|
|
{
|
|
var src = _points.ObserveOn(NewThreadScheduler.Default);
|
|
return Log(src).Remotable();
|
|
}
|
|
|
|
public IObservable<T> Log<T>(IObservable<T> source)
|
|
{
|
|
return Observable.Create<T>(observer =>
|
|
{
|
|
Console.WriteLine("Client connected!");
|
|
|
|
var d = source.Subscribe(observer);
|
|
|
|
return Disposable.Create(() =>
|
|
{
|
|
Console.WriteLine("Client disconnected!");
|
|
d.Dispose();
|
|
});
|
|
});
|
|
}
|
|
|
|
public void OnNext(Point value)
|
|
{
|
|
_points.OnNext(value);
|
|
}
|
|
|
|
public void OnError(Exception error)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public void OnCompleted()
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public override object InitializeLifetimeService()
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|