You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ writer.Write{MangleClass(ResolveDomain(f.Domain))}(_{MangleMethod(f.Name)}); }}");
662
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ writer.Write{MangleClass(ResolveDomain(f.Domain))}(_{MangleMethod(f.Name)}); }}");
686
663
}
687
664
}
688
665
EmitLine(" }");
689
666
EmitLine("");
690
667
EmitLine(" public override int GetRequiredPayloadBufferSize()");
691
668
EmitLine(" {");
692
-
EmitLine(" int bufferSize = 0;");
693
-
EmitLine(" int fieldCount = 0;");
669
+
EmitLine($" int bufferSize = {Math.Max((int)Math.Ceiling(c.m_Fields.Count/15.0),1)*2}; // number of presence fields ({c.m_Fields.Count}) in 2 bytes blocks");
694
670
foreach(AmqpFieldfinc.m_Fields)
695
671
{
696
672
switch(MapDomain(f.Domain))
697
673
{
698
674
case"byte":
699
-
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ fieldCount++; bufferSize++; }} // _{MangleMethod(f.Name)} in bytes");
675
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ bufferSize++; }} // _{MangleMethod(f.Name)} in bytes");
700
676
break;
701
677
case"string":
702
-
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ fieldCount++; bufferSize += 1 + Encoding.UTF8.GetByteCount(_{MangleMethod(f.Name)}); }} // _{MangleMethod(f.Name)} in bytes");
678
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ bufferSize += 1 + Encoding.UTF8.GetByteCount(_{MangleMethod(f.Name)}); }} // _{MangleMethod(f.Name)} in bytes");
703
679
break;
704
680
case"byte[]":
705
-
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ fieldCount++; bufferSize += 4 + _{MangleMethod(f.Name)}.Length; }} // _{MangleMethod(f.Name)} in bytes");
681
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ bufferSize += 4 + _{MangleMethod(f.Name)}.Length; }} // _{MangleMethod(f.Name)} in bytes");
706
682
break;
707
683
case"ushort":
708
-
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ fieldCount++; bufferSize += 2; }} // _{MangleMethod(f.Name)} in bytes");
684
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ bufferSize += 2; }} // _{MangleMethod(f.Name)} in bytes");
709
685
break;
710
686
case"uint":
711
-
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ fieldCount++; bufferSize += 4; }} // _{MangleMethod(f.Name)} in bytes");
687
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ bufferSize += 4; }} // _{MangleMethod(f.Name)} in bytes");
712
688
break;
713
689
case"ulong":
714
690
case"AmqpTimestamp":
715
-
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ fieldCount++; bufferSize += 8; }} // _{MangleMethod(f.Name)} in bytes");
691
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ bufferSize += 8; }} // _{MangleMethod(f.Name)} in bytes");
716
692
break;
717
693
case"bool":
718
694
// TODO: implement if used, not used anywhere yet
719
695
break;
720
696
case"IDictionary<string, object>":
721
-
EmitLine($" if (_{MangleMethod(f.Name)}_present) {{ fieldCount++; bufferSize += WireFormatting.GetTableByteCount(_{MangleMethod(f.Name)}); }} // _{MangleMethod(f.Name)} in bytes");
697
+
EmitLine($" if (Is{MangleClass(f.Name)}Present()) {{ bufferSize += WireFormatting.GetTableByteCount(_{MangleMethod(f.Name)}); }} // _{MangleMethod(f.Name)} in bytes");
722
698
break;
723
699
default:
724
700
thrownewArgumentOutOfRangeException($"Can't handle size calculations for type = {f.Domain};");
725
701
}
726
702
}
727
703
728
-
EmitLine($" bufferSize += Math.Max((int)Math.Ceiling(fieldCount / 15.0), 1) * 2; // number of presence fields in bytes");
729
704
EmitLine(" return bufferSize;");
730
705
EmitLine(" }");
731
706
EmitLine("");
@@ -736,31 +711,23 @@ public void EmitClassProperties(AmqpClass c)
0 commit comments