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