Implement new System.Net.Sockets debugger

This commit is contained in:
Yoshi Askharoun
2023-06-01 20:18:53 -05:00
parent 5401f988b9
commit 3539ed4826
8 changed files with 293 additions and 11 deletions
+32 -3
View File
@@ -1,4 +1,8 @@
using System.Runtime.Serialization;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Sockets;
using System.Runtime.Serialization;
namespace Microsoft.Iris.Debug;
@@ -7,9 +11,34 @@ namespace Microsoft.Iris.Debug;
/// </summary>
public static class DebugRemoting
{
public const string DEFAULT_TCP_CLIENT_URI = ">tcp://127.0.0.1:5555,@tcp://127.0.0.1:55556";
public const string DEFAULT_TCP_CLIENT_URI = ">tcp://127.0.0.1:5555,@tcp://127.0.0.1:5556";
public const string DEFAULT_TCP_SERVER_URI = "@tcp://127.0.0.1:5555,>tcp://127.0.0.1:5556";
public const string DEFAULT_TCP_SERVER_URI = "@tcp://127.0.0.1:5555,>tcp://127.0.0.1:55556";
public static readonly Uri DEFAULT_TCP_URI = new("tcp://127.0.0.1:5555");
internal static IFormatter CreateBsonFormatter() => new BsonFormatter(new StreamingContext(StreamingContextStates.Remoting));
internal static Data.DebuggerMessageFrame ReceiveDebuggerMessage(Socket socket)
{
try
{
byte[] sizeBuffer = new byte[sizeof(int)];
int bytesReceived = socket.Receive(sizeBuffer);
// Reached end of stream, no bytes to recieve
if (bytesReceived == 0)
return null;
int frameLength = BitConverter.ToInt32(sizeBuffer, 0);
byte[] frameBytes = new byte[frameLength];
socket.Receive(frameBytes, frameLength, SocketFlags.None);
return new(frameBytes);
}
catch (SocketException)
{
return null;
}
}
}