Skip to content

Commit

Permalink
Generate "using" in steamlanguage, generate proto deserialize with le…
Browse files Browse the repository at this point in the history
…ngth
  • Loading branch information
xPaw committed Nov 29, 2024
1 parent 8500c49 commit 792385f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 26 deletions.
26 changes: 4 additions & 22 deletions Resources/SteamLanguageParser/Generator/CSharpGen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -415,16 +415,9 @@ private static void EmitClassSerializer(ClassNode cnode, StringBuilder sb, int l


// first emit variable length members
List<string> varLengthProps = [];
List<string> openedStreams = [];
varLengthProps.Add(baseSize.ToString());

if (cnode.Parent != null)
{
sb.AppendLine(padding + "\tHeader.Serialize(stream);");
varLengthProps.Add("(int)msHeader.Length");
openedStreams.Add("msHeader");

sb.AppendLine();
}

Expand All @@ -445,7 +438,7 @@ private static void EmitClassSerializer(ClassNode cnode, StringBuilder sb, int l
return;
}

sb.AppendLine(padding + "\tMemoryStream ms" + GetUpperName(prop.Name) + " = new MemoryStream();");
sb.AppendLine(padding + "\tusing MemoryStream ms" + GetUpperName(prop.Name) + " = new MemoryStream();");
sb.AppendLine(padding + "\tProtoBuf.Serializer.Serialize<" + typestr + ">(ms" + GetUpperName(prop.Name) + ", " + GetUpperName(prop.Name) + ");");

if (prop.FlagsOpt != null)
Expand All @@ -457,11 +450,8 @@ private static void EmitClassSerializer(ClassNode cnode, StringBuilder sb, int l
}
else
{
sb.AppendLine(padding + "\tMemoryStream ms" + GetUpperName(prop.Name) + " = " + GetUpperName(prop.Name) + ".serialize();");
sb.AppendLine(padding + "\tusing MemoryStream ms" + GetUpperName(prop.Name) + " = " + GetUpperName(prop.Name) + ".serialize();");
}

varLengthProps.Add("(int)ms" + GetUpperName(prop.Name) + ".Length");
openedStreams.Add("ms" + GetUpperName(prop.Name));
}
}

Expand Down Expand Up @@ -523,14 +513,6 @@ private static void EmitClassSerializer(ClassNode cnode, StringBuilder sb, int l
}

sb.AppendLine();

foreach (string stream in openedStreams)
{
sb.AppendLine(padding + "\t" + stream + ".Dispose();");
}

//sb.AppendLine();
//sb.AppendLine(padding + "\tmsBuffer.Seek( 0, SeekOrigin.Begin );");
sb.AppendLine(padding + "}");
}

Expand Down Expand Up @@ -576,8 +558,8 @@ private void EmitClassDeserializer(ClassNode cnode, StringBuilder sb, int level,
{
if (prop.FlagsOpt != null)
{
sb.AppendLine(padding + "\tusing( MemoryStream ms" + GetUpperName(prop.Name) + " = new MemoryStream( br.ReadBytes( " + GetUpperName(prop.FlagsOpt) + " ) ) )");
sb.AppendLine(padding + "\t\t" + GetUpperName(prop.Name) + " = ProtoBuf.Serializer.Deserialize<" + typestr + ">( ms" + GetUpperName(prop.Name) + " );");
sb.AppendLine(padding + "\tArgumentOutOfRangeException.ThrowIfNegative( " + GetUpperName( prop.FlagsOpt ) + " );" );
sb.AppendLine(padding + "\t" + GetUpperName(prop.Name) + " = ProtoBuf.Serializer.Deserialize<" + typestr + ">( stream, length: " + GetUpperName( prop.FlagsOpt ) + " );");
}
else
{
Expand Down
6 changes: 2 additions & 4 deletions SteamKit2/SteamKit2/Base/Generated/SteamLanguageInternal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ public MsgHdrProtoBuf()

public void Serialize(Stream stream)
{
MemoryStream msProto = new MemoryStream();
using MemoryStream msProto = new MemoryStream();
ProtoBuf.Serializer.Serialize<SteamKit2.Internal.CMsgProtoBufHeader>(msProto, Proto);
HeaderLength = (int)msProto.Length;
using BinaryWriter bw = new BinaryWriter( stream, Encoding.UTF8, leaveOpen: true );
Expand All @@ -358,7 +358,6 @@ public void Serialize(Stream stream)
bw.Write( HeaderLength );
bw.Write( msProto.ToArray() );

msProto.Dispose();
}

public void Deserialize( Stream stream )
Expand Down Expand Up @@ -393,7 +392,7 @@ public MsgGCHdrProtoBuf()

public void Serialize(Stream stream)
{
MemoryStream msProto = new MemoryStream();
using MemoryStream msProto = new MemoryStream();
ProtoBuf.Serializer.Serialize<SteamKit2.GC.Internal.CMsgProtoBufHeader>(msProto, Proto);
HeaderLength = (int)msProto.Length;
using BinaryWriter bw = new BinaryWriter( stream, Encoding.UTF8, leaveOpen: true );
Expand All @@ -402,7 +401,6 @@ public void Serialize(Stream stream)
bw.Write( HeaderLength );
bw.Write( msProto.ToArray() );

msProto.Dispose();
}

public void Deserialize( Stream stream )
Expand Down

0 comments on commit 792385f

Please sign in to comment.