forked from zxl/LaboratoryProtection
93 lines
2.9 KiB
C#
93 lines
2.9 KiB
C#
|
using Cysharp.Threading.Tasks;
|
|||
|
|
|||
|
using MessagePipe;
|
|||
|
|
|||
|
using PMaker.MessagePipe;
|
|||
|
|
|||
|
using UniRx;
|
|||
|
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace PMaker.Example.Message
|
|||
|
{
|
|||
|
|
|||
|
public class MessagePipeTest : MonoBehaviour
|
|||
|
{
|
|||
|
void Start()
|
|||
|
{
|
|||
|
MessageKit.GetSubscriber<int>().Subscribe(_ => {
|
|||
|
Debug.Log(_);
|
|||
|
}).AddTo(this);
|
|||
|
|
|||
|
MessageKit.GetPublisher<int>().Publish(123);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void Method2()
|
|||
|
{
|
|||
|
var builder = new BuiltinContainerBuilder();
|
|||
|
|
|||
|
builder.AddMessagePipe()
|
|||
|
.AddMessageBroker<int>()
|
|||
|
.AddMessageBroker<int, int>();
|
|||
|
var provider = builder.BuildServiceProvider();
|
|||
|
//GlobalMessagePipe.pro
|
|||
|
GlobalMessagePipe.SetProvider(provider);
|
|||
|
|
|||
|
var p = GlobalMessagePipe.GetPublisher<int>();
|
|||
|
var s = GlobalMessagePipe.GetSubscriber<int>();
|
|||
|
var p1 = GlobalMessagePipe.GetPublisher<int, int>();
|
|||
|
var s1 = GlobalMessagePipe.GetSubscriber<int, int>();
|
|||
|
|
|||
|
var d = s.Subscribe(x => Debug.Log(x), _ => _ == 10);
|
|||
|
var d1 = s1.Subscribe(1, x => Debug.Log(x));
|
|||
|
|
|||
|
p.Publish(10);
|
|||
|
p.Publish(20);
|
|||
|
p.Publish(30);
|
|||
|
|
|||
|
p1.Publish(1, 30);
|
|||
|
p1.Publish(2, 30);
|
|||
|
|
|||
|
builder.AddMessageBroker<float>();
|
|||
|
provider = builder.BuildServiceProvider();
|
|||
|
GlobalMessagePipe.SetProvider(provider);
|
|||
|
Debug.Log(GlobalMessagePipe.GetPublisher<float>());
|
|||
|
d.Dispose();
|
|||
|
}
|
|||
|
|
|||
|
private void Method1()
|
|||
|
{
|
|||
|
var builder = new BuiltinContainerBuilder();
|
|||
|
|
|||
|
builder.AddMessagePipe(/* configure option */);
|
|||
|
|
|||
|
// AddMessageBroker: Register for IPublisher<T>/ISubscriber<T>, includes async and buffered.
|
|||
|
builder.AddMessageBroker<int>();
|
|||
|
builder.AddMessageBroker<float, int>();
|
|||
|
|
|||
|
// also exists AddMessageBroker<TKey, TMessage>, AddRequestHandler, AddAsyncRequestHandler
|
|||
|
|
|||
|
// AddMessageHandlerFilter: Register for filter, also exists RegisterAsyncMessageHandlerFilter, Register(Async)RequestHandlerFilter
|
|||
|
//builder.AddMessageHandlerFilter<MyFilter<int>>();
|
|||
|
|
|||
|
// create provider and set to Global(to enable diagnostics window and global fucntion)
|
|||
|
var provider = builder.BuildServiceProvider();
|
|||
|
GlobalMessagePipe.SetProvider(provider);
|
|||
|
|
|||
|
// --- to use MessagePipe, you can use from GlobalMessagePipe.
|
|||
|
var p = GlobalMessagePipe.GetPublisher<int>();
|
|||
|
var s = GlobalMessagePipe.GetSubscriber<int>();
|
|||
|
var s1 = GlobalMessagePipe.GetSubscriber<float, int>();
|
|||
|
Debug.Log(s1);
|
|||
|
|
|||
|
var d = s.Subscribe(x => Debug.Log(x));
|
|||
|
|
|||
|
p.Publish(10);
|
|||
|
p.Publish(20);
|
|||
|
p.Publish(30);
|
|||
|
|
|||
|
d.Dispose();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|