Skip to content

Commit 84efb51

Browse files
committed
removed unnecessary files
1 parent 54797eb commit 84efb51

6 files changed

Lines changed: 182 additions & 137 deletions

File tree

src/SuperSocket.MySQL/PackagePartReader/ErrorCodePartReader.cs

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/SuperSocket.MySQL/PackagePartReader/ErrorMessagePartReader.cs

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/SuperSocket.MySQL/PackagePartReader/PackageHeadReader.cs

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/SuperSocket.MySQL/PackagePartReader/PackagePartReader.cs

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
using System;
2+
using System.Buffers;
3+
using System.Text;
4+
5+
namespace SuperSocket.MySQL.Packets
6+
{
7+
public class HandshakePacket : MySQLPacket
8+
{
9+
public byte ProtocolVersion { get; set; }
10+
public string ServerVersion { get; set; }
11+
public uint ConnectionId { get; set; }
12+
public byte[] AuthPluginDataPart1 { get; set; } = new byte[8];
13+
public uint CapabilityFlagsLower { get; set; }
14+
public byte CharacterSet { get; set; }
15+
public ushort StatusFlags { get; set; }
16+
public uint CapabilityFlagsUpper { get; set; }
17+
public byte AuthPluginDataLength { get; set; }
18+
public byte[] AuthPluginDataPart2 { get; set; }
19+
public string AuthPluginName { get; set; }
20+
21+
public uint CapabilityFlags => CapabilityFlagsLower | ((uint)CapabilityFlagsUpper << 16);
22+
23+
protected internal override void Decode(ref SequenceReader<byte> reader, object context)
24+
{
25+
// Read protocol version (1 byte)
26+
reader.TryRead(out byte protocolVersion);
27+
ProtocolVersion = protocolVersion;
28+
29+
// Read null-terminated server version string
30+
ServerVersion = reader.TryReadNullTerminatedString(out string serverVersion) ? serverVersion : string.Empty;
31+
32+
// Read connection ID (4 bytes)
33+
reader.TryReadLittleEndian(out int connectionId);
34+
ConnectionId = (uint)connectionId;
35+
36+
// Read auth plugin data part 1 (8 bytes)
37+
AuthPluginDataPart1 = new byte[8];
38+
reader.TryCopyTo(AuthPluginDataPart1);
39+
reader.Advance(8);
40+
41+
// Skip filler byte (1 byte)
42+
reader.Advance(1);
43+
44+
// Read capability flags lower (2 bytes)
45+
reader.TryReadLittleEndian(out short capabilityFlagsLower);
46+
CapabilityFlagsLower = (uint)(ushort)capabilityFlagsLower;
47+
48+
// Check if more data is available (for MySQL 4.1+)
49+
if (reader.Remaining > 0)
50+
{
51+
// Read character set (1 byte)
52+
reader.TryRead(out byte characterSet);
53+
CharacterSet = characterSet;
54+
55+
// Read status flags (2 bytes)
56+
reader.TryReadLittleEndian(out short statusFlags);
57+
StatusFlags = (ushort)statusFlags;
58+
59+
// Read capability flags upper (2 bytes)
60+
reader.TryReadLittleEndian(out short capabilityFlagsUpper);
61+
CapabilityFlagsUpper = (uint)(ushort)capabilityFlagsUpper;
62+
63+
// Read auth plugin data length (1 byte)
64+
reader.TryRead(out byte authPluginDataLength);
65+
AuthPluginDataLength = authPluginDataLength;
66+
67+
// Skip reserved bytes (10 bytes)
68+
reader.Advance(10);
69+
70+
// Read auth plugin data part 2 if present
71+
if ((CapabilityFlags & 0x00008000) != 0) // CLIENT_SECURE_CONNECTION
72+
{
73+
var part2Length = Math.Max(13, AuthPluginDataLength - 8);
74+
AuthPluginDataPart2 = new byte[part2Length];
75+
reader.TryCopyTo(AuthPluginDataPart2);
76+
reader.Advance(part2Length);
77+
}
78+
79+
// Read auth plugin name if present
80+
if ((CapabilityFlags & 0x00080000) != 0) // CLIENT_PLUGIN_AUTH
81+
{
82+
AuthPluginName = reader.TryReadNullTerminatedString(out string authPluginName) ? authPluginName : string.Empty;
83+
}
84+
}
85+
}
86+
87+
protected internal override int Encode(IBufferWriter<byte> writer)
88+
{
89+
var bytesWritten = 0;
90+
91+
// Write protocol version (1 byte)
92+
var span = writer.GetSpan(1);
93+
span[0] = ProtocolVersion;
94+
writer.Advance(1);
95+
bytesWritten += 1;
96+
97+
// Write null-terminated server version
98+
var serverVersionBytes = Encoding.UTF8.GetBytes(ServerVersion ?? string.Empty);
99+
span = writer.GetSpan(serverVersionBytes.Length + 1);
100+
serverVersionBytes.CopyTo(span);
101+
span[serverVersionBytes.Length] = 0; // null terminator
102+
writer.Advance(serverVersionBytes.Length + 1);
103+
bytesWritten += serverVersionBytes.Length + 1;
104+
105+
// Write connection ID (4 bytes)
106+
span = writer.GetSpan(4);
107+
BitConverter.TryWriteBytes(span, ConnectionId);
108+
writer.Advance(4);
109+
bytesWritten += 4;
110+
111+
// Write auth plugin data part 1 (8 bytes)
112+
span = writer.GetSpan(8);
113+
(AuthPluginDataPart1 ?? new byte[8]).CopyTo(span);
114+
writer.Advance(8);
115+
bytesWritten += 8;
116+
117+
// Write filler byte (1 byte)
118+
span = writer.GetSpan(1);
119+
span[0] = 0;
120+
writer.Advance(1);
121+
bytesWritten += 1;
122+
123+
// Write capability flags lower (2 bytes)
124+
span = writer.GetSpan(2);
125+
BitConverter.TryWriteBytes(span, (ushort)CapabilityFlagsLower);
126+
writer.Advance(2);
127+
bytesWritten += 2;
128+
129+
// Write character set (1 byte)
130+
span = writer.GetSpan(1);
131+
span[0] = CharacterSet;
132+
writer.Advance(1);
133+
bytesWritten += 1;
134+
135+
// Write status flags (2 bytes)
136+
span = writer.GetSpan(2);
137+
BitConverter.TryWriteBytes(span, StatusFlags);
138+
writer.Advance(2);
139+
bytesWritten += 2;
140+
141+
// Write capability flags upper (2 bytes)
142+
span = writer.GetSpan(2);
143+
BitConverter.TryWriteBytes(span, (ushort)CapabilityFlagsUpper);
144+
writer.Advance(2);
145+
bytesWritten += 2;
146+
147+
// Write auth plugin data length (1 byte)
148+
span = writer.GetSpan(1);
149+
span[0] = AuthPluginDataLength;
150+
writer.Advance(1);
151+
bytesWritten += 1;
152+
153+
// Write reserved bytes (10 bytes of zeros)
154+
span = writer.GetSpan(10);
155+
span.Slice(0, 10).Clear();
156+
writer.Advance(10);
157+
bytesWritten += 10;
158+
159+
// Write auth plugin data part 2 if present
160+
if ((CapabilityFlags & 0x00008000) != 0 && AuthPluginDataPart2 != null) // CLIENT_SECURE_CONNECTION
161+
{
162+
span = writer.GetSpan(AuthPluginDataPart2.Length);
163+
AuthPluginDataPart2.CopyTo(span);
164+
writer.Advance(AuthPluginDataPart2.Length);
165+
bytesWritten += AuthPluginDataPart2.Length;
166+
}
167+
168+
// Write auth plugin name if present
169+
if ((CapabilityFlags & 0x00080000) != 0 && !string.IsNullOrEmpty(AuthPluginName)) // CLIENT_PLUGIN_AUTH
170+
{
171+
var pluginNameBytes = Encoding.UTF8.GetBytes(AuthPluginName);
172+
span = writer.GetSpan(pluginNameBytes.Length + 1);
173+
pluginNameBytes.CopyTo(span);
174+
span[pluginNameBytes.Length] = 0; // null terminator
175+
writer.Advance(pluginNameBytes.Length + 1);
176+
bytesWritten += pluginNameBytes.Length + 1;
177+
}
178+
179+
return bytesWritten;
180+
}
181+
}
182+
}

src/SuperSocket.MySQL/QueryResultFilter.cs

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)