Add Ping command
This commit is contained in:
@@ -1,4 +1,8 @@
|
|||||||
using System;
|
using PlantBox.Shared.Communication;
|
||||||
|
using PlantBox.Shared.Communication.Commands;
|
||||||
|
using System;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
|
||||||
namespace PlantBox.Broker
|
namespace PlantBox.Broker
|
||||||
{
|
{
|
||||||
@@ -7,6 +11,29 @@ namespace PlantBox.Broker
|
|||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Hello World!");
|
Console.WriteLine("Hello World!");
|
||||||
|
var listener = new TcpListener(IPAddress.Any, Connection.TCP_PORT);
|
||||||
|
listener.Start();
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var client = listener.AcceptTcpClient();
|
||||||
|
var stream = new CommandStream(client.GetStream());
|
||||||
|
|
||||||
|
var command = stream.Receive();
|
||||||
|
Console.WriteLine(command);
|
||||||
|
|
||||||
|
var ping = new Ping().Deserialize(command.Arguments);
|
||||||
|
Console.WriteLine($"Ping: {ping.Message}");
|
||||||
|
|
||||||
|
stream.Send(new Ping(ping.Message).ToCommandPacket(Command.Ping, command.ID));
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace PlantBox.Shared.Communication.Commands
|
|||||||
/// A class serializable to a <see cref="CommandPacket"/>
|
/// A class serializable to a <see cref="CommandPacket"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
public abstract class CommandSerializable<T>
|
public abstract class CommandSerializable<T> where T : new()
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serialize all the values in a string <see cref="Array"/>,
|
/// Serialize all the values in a string <see cref="Array"/>,
|
||||||
|
|||||||
41
PlantBox.Shared/Communication/Commands/Ping.cs
Normal file
41
PlantBox.Shared/Communication/Commands/Ping.cs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace PlantBox.Shared.Communication.Commands
|
||||||
|
{
|
||||||
|
public class Ping : CommandSerializable<Ping>
|
||||||
|
{
|
||||||
|
public string Message { get; set; }
|
||||||
|
|
||||||
|
public Ping()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public Ping(string message)
|
||||||
|
{
|
||||||
|
Message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Ping Deserialize(string[] arguments)
|
||||||
|
{
|
||||||
|
if (arguments == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(arguments));
|
||||||
|
}
|
||||||
|
if (arguments.Length < 1)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"Excepted at least 1 argument, got {arguments.Length}");
|
||||||
|
}
|
||||||
|
|
||||||
|
Message = arguments[0];
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string[] Serialize()
|
||||||
|
{
|
||||||
|
return new string[] { Message };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user