Fixes to pass unit tests
This commit is contained in:
parent
e7a6d92740
commit
5a3c2f2a2c
@ -19,10 +19,11 @@ namespace RoboidControl {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ipAddress">The IP address of the participant</param>
|
/// <param name="ipAddress">The IP address of the participant</param>
|
||||||
/// <param name="port">The UDP port of the participant</param>
|
/// <param name="port">The UDP port of the participant</param>
|
||||||
public Participant(string ipAddress, int port) {
|
public Participant(string ipAddress, int port, Participant localParticipant = null) {
|
||||||
this.ipAddress = ipAddress;
|
this.ipAddress = ipAddress;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
this.udpClient = new UdpClient();
|
if (localParticipant != null)
|
||||||
|
this.udpClient = localParticipant.udpClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -34,7 +35,7 @@ namespace RoboidControl {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int port = 0;
|
public int port = 0;
|
||||||
|
|
||||||
private UdpClient udpClient = null;
|
public UdpClient udpClient = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// he network Id to identify the participant
|
/// he network Id to identify the participant
|
||||||
@ -119,8 +120,11 @@ namespace RoboidControl {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
IPEndPoint participantEndpoint = new IPEndPoint(IPAddress.Parse(this.ipAddress), this.port);
|
IPEndPoint participantEndpoint = new IPEndPoint(IPAddress.Parse(this.ipAddress), this.port);
|
||||||
Console.WriteLine($"msg to {participantEndpoint.Address.ToString()} {participantEndpoint.Port}");
|
Console.WriteLine($"msg to remote participant {participantEndpoint.Address.ToString()} {participantEndpoint.Port}");
|
||||||
this.udpClient?.Send(this.buffer, bufferSize, participantEndpoint);
|
if (udpClient != null) {
|
||||||
|
Console.WriteLine("sending...");
|
||||||
|
this.udpClient?.Send(this.buffer, bufferSize, participantEndpoint);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,9 +169,9 @@ namespace RoboidControl {
|
|||||||
/// <param name="ipAddress">The IP address of the participant</param>
|
/// <param name="ipAddress">The IP address of the participant</param>
|
||||||
/// <param name="port">The port used to send messages to this participant</param>
|
/// <param name="port">The port used to send messages to this participant</param>
|
||||||
/// <returns>The added participant</returns>
|
/// <returns>The added participant</returns>
|
||||||
public static Participant AddParticipant(string ipAddress, int port) {
|
public static Participant AddParticipant(string ipAddress, int port, Participant localParticipant = null) {
|
||||||
Console.WriteLine($"New Participant {ipAddress}:{port}");
|
Console.WriteLine($"New Participant {ipAddress}:{port}");
|
||||||
Participant participant = new(ipAddress, port) {
|
Participant participant = new(ipAddress, port, localParticipant) {
|
||||||
networkId = (byte)(Participant.participants.Count + 1)
|
networkId = (byte)(Participant.participants.Count + 1)
|
||||||
};
|
};
|
||||||
Participant.participants.Add(participant);
|
Participant.participants.Add(participant);
|
||||||
|
@ -43,13 +43,6 @@ namespace RoboidControl {
|
|||||||
/// <param name="port">The port number of the site server</param>
|
/// <param name="port">The port number of the site server</param>
|
||||||
/// <param name="localPort">The port used by the local participant</param>
|
/// <param name="localPort">The port used by the local participant</param>
|
||||||
public ParticipantUDP(string ipAddress, int port = 7681, int localPort = 7681) : base("127.0.0.1", localPort) {
|
public ParticipantUDP(string ipAddress, int port = 7681, int localPort = 7681) : base("127.0.0.1", localPort) {
|
||||||
if (this.port == 0)
|
|
||||||
this.isIsolated = true;
|
|
||||||
else
|
|
||||||
this.remoteSite = new Participant(ipAddress, port);
|
|
||||||
|
|
||||||
Participant.AddParticipant(this);
|
|
||||||
|
|
||||||
// Determine local IP address
|
// Determine local IP address
|
||||||
IPAddress localIpAddress = null;
|
IPAddress localIpAddress = null;
|
||||||
IPAddress subnetMask = null;
|
IPAddress subnetMask = null;
|
||||||
@ -80,6 +73,12 @@ namespace RoboidControl {
|
|||||||
this.udpClient = new UdpClient(localPort);
|
this.udpClient = new UdpClient(localPort);
|
||||||
this.udpClient.BeginReceive(new AsyncCallback(result => ReceiveUDP(result)), null);
|
this.udpClient.BeginReceive(new AsyncCallback(result => ReceiveUDP(result)), null);
|
||||||
|
|
||||||
|
if (this.port == 0)
|
||||||
|
this.isIsolated = true;
|
||||||
|
else
|
||||||
|
this.remoteSite = new Participant(ipAddress, port, this);
|
||||||
|
|
||||||
|
Participant.AddParticipant(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ParticipantUDP isolatedParticipant = null;
|
private static ParticipantUDP isolatedParticipant = null;
|
||||||
@ -119,7 +118,7 @@ namespace RoboidControl {
|
|||||||
//public byte[] buffer = new byte[1024];
|
//public byte[] buffer = new byte[1024];
|
||||||
|
|
||||||
public IPEndPoint endPoint = null;
|
public IPEndPoint endPoint = null;
|
||||||
public UdpClient udpClient = null;
|
//public UdpClient udpClient = null;
|
||||||
public string broadcastIpAddress = "255.255.255.255";
|
public string broadcastIpAddress = "255.255.255.255";
|
||||||
|
|
||||||
public readonly ConcurrentQueue<IMessage> messageQueue = new ConcurrentQueue<IMessage>();
|
public readonly ConcurrentQueue<IMessage> messageQueue = new ConcurrentQueue<IMessage>();
|
||||||
@ -298,7 +297,7 @@ namespace RoboidControl {
|
|||||||
string ipAddress = endPoint.Address.ToString();
|
string ipAddress = endPoint.Address.ToString();
|
||||||
if (ipAddress != this.ipAddress) {
|
if (ipAddress != this.ipAddress) {
|
||||||
Participant remoteParticipant = GetParticipant(ipAddress, endPoint.Port);
|
Participant remoteParticipant = GetParticipant(ipAddress, endPoint.Port);
|
||||||
remoteParticipant ??= AddParticipant(ipAddress, endPoint.Port);
|
remoteParticipant ??= AddParticipant(ipAddress, endPoint.Port, this);
|
||||||
|
|
||||||
ReceiveData(data, remoteParticipant);
|
ReceiveData(data, remoteParticipant);
|
||||||
}
|
}
|
||||||
|
@ -82,10 +82,12 @@ namespace RoboidControl {
|
|||||||
if (participant == null || participant == this)
|
if (participant == null || participant == this)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
PoseMsg poseMsg = new(thing.owner.networkId, thing);
|
// PoseMsg poseMsg = new(thing.owner.networkId, thing);
|
||||||
this.Send(participant, poseMsg);
|
// this.Send(participant, poseMsg);
|
||||||
BinaryMsg binaryMsg = new(thing.owner.networkId, thing);
|
// BinaryMsg binaryMsg = new(thing.owner.networkId, thing);
|
||||||
this.Send(participant, binaryMsg);
|
// this.Send(participant, binaryMsg);
|
||||||
|
participant.Send(new PoseMsg(thing.owner.networkId, thing));
|
||||||
|
participant.Send(new BinaryMsg(thing.owner.networkId, thing));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -99,7 +101,8 @@ namespace RoboidControl {
|
|||||||
base.Process(sender, msg);
|
base.Process(sender, msg);
|
||||||
if (msg.networkId != sender.networkId) {
|
if (msg.networkId != sender.networkId) {
|
||||||
//Console.WriteLine($"{this.name} received New Participant -> {sender.networkId}");
|
//Console.WriteLine($"{this.name} received New Participant -> {sender.networkId}");
|
||||||
this.Send(sender, new NetworkIdMsg(sender.networkId));
|
// this.Send(sender, new NetworkIdMsg(sender.networkId));
|
||||||
|
sender.Send(new NetworkIdMsg(sender.networkId));
|
||||||
UpdateEvent e = new() {
|
UpdateEvent e = new() {
|
||||||
messageId = ParticipantMsg.Id,
|
messageId = ParticipantMsg.Id,
|
||||||
participant = sender
|
participant = sender
|
||||||
|
Loading…
x
Reference in New Issue
Block a user