@@ -942,6 +942,18 @@ struct Frame {
942
942
943
943
/* Writing Stream Headers ************************************************** */
944
944
945
+ private ubyte [] _propEncode (StreamFmt SF )(auto ref Property[] pProp)
946
+ {
947
+ // First write the properties as an associative array, that way duplicates
948
+ // are removed.
949
+ string [string ] mProps;
950
+ foreach (ref prop; pProp)
951
+ mProps[prop.name] = prop.toString! SF ();
952
+
953
+ ubyte [] pEnc = mProps.values .join(" \n " ).dup .r;
954
+ return pEnc;
955
+ }
956
+
945
957
void writeStreamHeader (StreamFmt SF )(
946
958
ref Appender! (ubyte []) buf, auto ref Property[] pProp, auto ref Frame[] pFrame
947
959
){
@@ -955,7 +967,7 @@ void writeStreamHeader(StreamFmt SF)(
955
967
pPkt ~= " \n <stream version=\" 3.0\" type=\" das-basic-stream\" >\n " .r;
956
968
if (pProp.length > 0 ){
957
969
pPkt ~= " <properties>\n " .r;
958
- pPkt ~= pProp.map ! ( prop => prop.toString ! SF ()).join( " \n " ).r ;
970
+ pPkt ~= _propEncode ! SF (pProp) ;
959
971
pPkt ~= " \n </properties>\n " .r;
960
972
}
961
973
foreach (ref frame; pFrame)
@@ -966,7 +978,7 @@ void writeStreamHeader(StreamFmt SF)(
966
978
}
967
979
else {
968
980
pPkt ~= " <stream version=\" 2.2\" >\n <properties\n " .r;
969
- pPkt ~= pProp.map ! ( prop => prop.toString ! SF ()).join( " \n " ).r ;
981
+ pPkt ~= _propEncode ! SF (pProp) ;
970
982
pPkt ~= " \n />\n " ;
971
983
/* Hey man, no frames in das2.2...
972
984
foreach(ref frame; pFrame)
0 commit comments