1
0
Fork 0
LaboratoryProtection/Assets/PMaker/UnityTest/MessagePipe/Scripts/MessagePipeTest.cs

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();
}
}
}