public void Receive_from_host() { var cre = PubnubCredentials.LoadFrom("pubnub credentials.txt"); using (var sut = new PubnubStandInTransceiver(cre, "hostchannel")) { var are = new AutoResetEvent(false); HostOutput result = null; sut.ReceivedFromHost += _ => { result = _; are.Set(); }; var sender = new Pubnub(cre.PublishingKey, cre.SubscriptionKey); var ho = new HostOutput { CorrelationId = Guid.NewGuid(), Data = "hello".Serialize(), Portname = "portname" }; sender.publish(sut.StandInEndpointAddress, ho.Serialize(), _ => { }); Assert.IsTrue(are.WaitOne(5000)); Assert.AreEqual(ho.CorrelationId, result.CorrelationId); Assert.AreEqual(ho.Data, result.Data); Assert.AreEqual(ho.Portname, result.Portname); } }
public void Process_local_output(IMessage message) { var standInEndpointAddress = _cache.Get(message.CorrelationId); var output = new HostOutput { Portname = message.Port.OutputPortToStandInPortname(), Data = message.Data.Serialize(), CorrelationId = message.CorrelationId }; Translated_output(new Tuple <string, HostOutput>(standInEndpointAddress, output)); }
void ProcessOnHost(HostInput input, Action <HostOutput> sendOutput) { Assert.AreEqual("localhost:1234", input.StandInEndpointAddress); var inputPort = new Port(input.Portname); // remoteOp.inputPort var outputPortname = string.Format(inputPort.OperationName + "." + inputPort.Name + "-out"); // remoteOp.outputPort var output = new HostOutput { CorrelationId = input.CorrelationId, Data = ("<" + input.Data.Deserialize() + ">").Serialize(), Portname = outputPortname }; sendOutput(output); }
public void Process_remote_input(HostOutput output) { var ctx = _cache.Get(output.CorrelationId); var port = output.Portname.RemotePortnameToInputPort(ctx.Path, ctx.StandInOperationName); var inputMsg = new ContextualizedMessage(port, output.Data.Deserialize(), ctx.CorrelationId) { Priority = ctx.Priority, Causalities = ctx.Causalities, FlowStack = ctx.FlowStack }; Translated_input(inputMsg); }
public void Host_to_StandIn() { using (var host = new WcfHostTransceiver("localhost:8000")) using (var standIn = new WcfStandInTransceiver("localhost:8001", "localhost:8000")) { HostOutput output = null; standIn.ReceivedFromHost += _ => output = _; host.SendToStandIn(new Tuple <string, HostOutput>("localhost:8001", new HostOutput { Data = new byte[] { 4, 2 } })); Assert.AreEqual(new byte[] { 4, 2 }, output.Data); } }
public void Connect_transceivers() { var cre = PubnubCredentials.LoadFrom("pubnub credentials.txt"); using (var host = new PubnubHostTransceiver(cre, "thehost")) { var config = new FlowRuntimeConfiguration() .AddOperation(new PubnubStandInOperation("op", cre, "thehost")) .AddStream(".in", "op#greeting") .AddStream("op#greeting", ".out"); using (var fr = new FlowRuntime(config)) { fr.Message += Console.WriteLine; host.ReceivedFromStandIn += rhi => { var data = (string)rhi.Data.Deserialize(); var ho = new HostOutput { CorrelationId = rhi.CorrelationId, Data = (data + "y").Serialize(), Portname = "greeting" }; ThreadPool.QueueUserWorkItem(_ => { host.SendToStandIn(new Tuple <string, HostOutput>(rhi.StandInEndpointAddress, ho)); }); }; fr.Process(".in", "hello"); var result = ""; Assert.IsTrue(fr.WaitForResult(5000, _ => result = _.Data as string)); Assert.AreEqual("helloy", result); } } }
public void Send_to_standIn() { var cre = PubnubCredentials.LoadFrom("pubnub credentials.txt"); using (var sut = new PubnubHostTransceiver(cre, "hostchannel")) { var standIn = new Pubnub(cre.PublishingKey, cre.SubscriptionKey, cre.SecretKey); try { var standInChannel = Guid.NewGuid().ToString(); var are = new AutoResetEvent(false); ReadOnlyCollection <object> result = null; standIn.subscribe(standInChannel, (ReadOnlyCollection <object> _) => { result = _; are.Set(); }); var ho = new HostOutput { CorrelationId = Guid.NewGuid(), Data = "hello".Serialize(), Portname = "portname" }; sut.SendToStandIn(new Tuple <string, HostOutput>(standInChannel, ho)); Assert.IsTrue(are.WaitOne(5000)); var hoReceived = Convert.FromBase64String((string)((JValue)result[0]).Value).Deserialize() as HostOutput; Assert.AreEqual(ho.CorrelationId, hoReceived.CorrelationId); Assert.AreEqual(ho.Data, hoReceived.Data); Assert.AreEqual(ho.Portname, hoReceived.Portname); } finally { standIn.subscribe("standIn", _ => {}); } } }
internal void ChannelFromHost(HostOutput output) { ReceivedFromHost(output); }
void SendFromHostToStandIn(string standInName, HostOutput output) { _standIns[standInName].ChannelFromHost(output); }