Example #1
0
        private const UInt32 MaximumL7ConversationPdusShardSize = 25_000_000; // 25MB, 134MB (128 MiB) Cassandra mutation limit

        public static IEnumerable <L7ConversationPdusShardEntity> ShardL7ConversationPdus(L7Conversation l7Conversation)
        {
            var currentShardNum        = 0;
            var currentShardSize       = 0;
            var currentShardPdusBuffer = new List <L7PduEntity>();

            foreach (var pdu in l7Conversation.Pdus)
            {
                var pduEntity = L7PduMapper.Map(pdu);
                currentShardPdusBuffer.Add(pduEntity);
                currentShardSize += pduEntity.Payload.Length;

                if (currentShardSize < MaximumL7ConversationPdusShardSize)
                {
                    continue;
                }

                yield return(new L7ConversationPdusShardEntity
                {
                    L7ConversationId = l7Conversation.Id,
                    Pdus = currentShardPdusBuffer.ToArray(),
                    Shard = currentShardNum
                });

                currentShardSize = 0;
                currentShardNum++;
                currentShardPdusBuffer.Clear();
            }

            if (currentShardPdusBuffer.Any())
            {
                yield return(new L7ConversationPdusShardEntity
                {
                    L7ConversationId = l7Conversation.Id,
                    Pdus = currentShardPdusBuffer.ToArray(),
                    Shard = currentShardNum
                });
            }
        }
Example #2
0
 public void ManualMapperBenchmark()
 {
     var l7Pdu = L7PduMapper.Map(this._l7Pdu);
 }