Пример #1
0
        private void Route(Socket socket, String routerName, IList <IPacketMessageEnvelope> envelopes, Int64 currentJournalSequence, Int64 previousJournalSequence)
        {
            var router = _context.RouterFactory.GetRouter(routerName);
            var outbox = router.Route(envelopes);

            if (outbox.Count == 0)
            {
                return;
            }

            var headers = new PacketHeaders()
            {
                CurrentJournalSequence  = currentJournalSequence,
                PreviousJournalSequence = previousJournalSequence
            };

            var packet = _context.CreatePacket(outbox, headers);

            socket.SendPacket(packet);
        }
Пример #2
0
        private void PublishMessages(Socket routerPubSocket, IPacket packet, Int64 seq)
        {
            var clonedEnvelopes = packet.CloneEnvelopes();

            for (int i = 0; i < clonedEnvelopes.Count; i++)
            {
                var envelope = clonedEnvelopes[i];

                var metadata = envelope.Metadata;
                // Set sequence for each message
                metadata.JournalSequence = seq - clonedEnvelopes.Count + i + 1;

                var newPacket = _context.CreatePacket(b => b
                                                      .AddMessage(envelope.MessageBinary, metadata)
                                                      );

                routerPubSocket.SendPacket(newPacket);
            }
        }