mirror of
https://git.battle-of-pip.de/root/vpr-mitarbeiterverwaltung.git
synced 2025-06-21 08:13:17 +02:00
trying to fix that some messages are not send after specific events
This commit is contained in:
parent
536de50e4c
commit
c2608f4bf6
@ -12,12 +12,18 @@ public class Server
|
|||||||
private StreamReader reader;
|
private StreamReader reader;
|
||||||
private StreamWriter writer;
|
private StreamWriter writer;
|
||||||
private Action<string> onMessageReceived;
|
private Action<string> onMessageReceived;
|
||||||
|
private Action<string> onCommandReceived;
|
||||||
|
|
||||||
public Action<string> OnMessageReceived
|
public Action<string> OnMessageReceived
|
||||||
{
|
{
|
||||||
get => onMessageReceived;
|
get => onMessageReceived;
|
||||||
set => onMessageReceived = value ?? throw new ArgumentNullException(nameof(value), "onMessageReceived cannot be null.");
|
set => onMessageReceived = value ?? throw new ArgumentNullException(nameof(value), "onMessageReceived cannot be null.");
|
||||||
}
|
}
|
||||||
|
public Action<string> OnCommandReceived
|
||||||
|
{
|
||||||
|
get => onCommandReceived;
|
||||||
|
set => onCommandReceived = value ?? throw new ArgumentNullException(nameof(value), "onMessageReceived cannot be null.");
|
||||||
|
}
|
||||||
|
|
||||||
private ConcurrentDictionary<string, TaskCompletionSource<string>> pendingRequests = new();
|
private ConcurrentDictionary<string, TaskCompletionSource<string>> pendingRequests = new();
|
||||||
|
|
||||||
@ -49,6 +55,7 @@ public class Server
|
|||||||
{
|
{
|
||||||
if (message.StartsWith("{") && message.EndsWith("}"))
|
if (message.StartsWith("{") && message.EndsWith("}"))
|
||||||
{
|
{
|
||||||
|
onCommandReceived?.Invoke(message);
|
||||||
Console.WriteLine("Received: " + message);
|
Console.WriteLine("Received: " + message);
|
||||||
// Parse the JSON response
|
// Parse the JSON response
|
||||||
var response = JsonSerializer.Deserialize<JsonResponse>(message);
|
var response = JsonSerializer.Deserialize<JsonResponse>(message);
|
||||||
|
@ -14,15 +14,18 @@ public class CommandLibrary
|
|||||||
|
|
||||||
#region Basic Commands
|
#region Basic Commands
|
||||||
|
|
||||||
[Command("help")]
|
/*[Command("help")]
|
||||||
public static string HelpCommand() =>
|
public static string HelpCommand(string[] args, TcpClient? client, TcpServer? socket)
|
||||||
"Available commands:\n" +
|
{
|
||||||
"1. help - Show this help message\n" +
|
throw new CommandException("Available commands:%break" +
|
||||||
"2. exit - Exit the server\n" +
|
"1. help - Show this help message%break" +
|
||||||
"3. user - User management\n" +
|
"2. exit - Exit the server%break" +
|
||||||
"4. settings - Server settings\n" +
|
"3. user - User management%break" +
|
||||||
"5. start - Start the server\n" +
|
"4. settings - Server settings%break" +
|
||||||
"6. stop - Stop the server\n";
|
"5. start - Start the server%break" +
|
||||||
|
"6. stop - Stop the server%break");
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ public void ExecuteCommand(string executor,
|
|||||||
};
|
};
|
||||||
|
|
||||||
var sendClientMessage = JsonSerializer.Serialize(returnMessage);
|
var sendClientMessage = JsonSerializer.Serialize(returnMessage);
|
||||||
clientSocket?.SendMessageAsync(client, sendClientMessage + "\n");
|
clientSocket?.SendMessageAsync(client, sendClientMessage + "\r\n");
|
||||||
Program.messageSender.Debug($"[COMMANDMANAGER] Response sent to client.");
|
Program.messageSender.Debug($"[COMMANDMANAGER] Response sent to client.");
|
||||||
}
|
}
|
||||||
// If your command threw a CommandException, catch it here:
|
// If your command threw a CommandException, catch it here:
|
||||||
@ -91,7 +91,15 @@ public void ExecuteCommand(string executor,
|
|||||||
Response = $"Error: {cmdEx.Message}"
|
Response = $"Error: {cmdEx.Message}"
|
||||||
};
|
};
|
||||||
var sendClientMessage = JsonSerializer.Serialize(returnMessage);
|
var sendClientMessage = JsonSerializer.Serialize(returnMessage);
|
||||||
clientSocket?.SendMessageAsync(client, sendClientMessage + "\n");
|
try
|
||||||
|
{
|
||||||
|
clientSocket?.SendMessageAsync(client, sendClientMessage + "\r\n");
|
||||||
|
Program.messageSender.Debug("[COMMANDMANAGER] Response sent to client.");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Program.messageSender.Error($"[COMMANDMANAGER] Cannot send errormessage to Client: {e.Message}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Any other exception inside the invoked method
|
// Any other exception inside the invoked method
|
||||||
catch (TargetInvocationException ex)
|
catch (TargetInvocationException ex)
|
||||||
@ -113,6 +121,13 @@ public void ExecuteCommand(string executor,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Program.messageSender.Warn($"[COMMANDMANAGER] Unknown command '{executor}' received.");
|
Program.messageSender.Warn($"[COMMANDMANAGER] Unknown command '{executor}' received.");
|
||||||
|
var returnMessage = new Library.Server.JsonResponse
|
||||||
|
{
|
||||||
|
Id = cid,
|
||||||
|
Response = $"Unknown command '{executor}' received."
|
||||||
|
};
|
||||||
|
string sendClientMessage = JsonSerializer.Serialize(returnMessage);
|
||||||
|
clientSocket.SendMessageAsync(client, sendClientMessage + "\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -35,10 +35,8 @@ public class Tester
|
|||||||
"help"
|
"help"
|
||||||
};
|
};
|
||||||
|
|
||||||
server.OnMessageReceived = (message) =>
|
server.OnMessageReceived = (message) => ms.Log(message);
|
||||||
{
|
server.OnCommandReceived = (message) => ms.Log(message);
|
||||||
ms.Log(message);
|
|
||||||
};
|
|
||||||
|
|
||||||
while (running)
|
while (running)
|
||||||
{
|
{
|
||||||
@ -50,7 +48,7 @@ public class Tester
|
|||||||
{
|
{
|
||||||
string response = await server.HelpCommand();
|
string response = await server.HelpCommand();
|
||||||
// split response into string[] at \n
|
// split response into string[] at \n
|
||||||
var responseLines = response.Split('\n').ToList();
|
var responseLines = response.Split("%break").ToList();
|
||||||
await messageBox.ShowAsync("Command Result: Help", responseLines);
|
await messageBox.ShowAsync("Command Result: Help", responseLines);
|
||||||
}
|
}
|
||||||
else if (command == "login")
|
else if (command == "login")
|
||||||
@ -60,14 +58,14 @@ public class Tester
|
|||||||
|
|
||||||
string response = await server.Login(user, password);
|
string response = await server.Login(user, password);
|
||||||
// split response into string[] at \n
|
// split response into string[] at \n
|
||||||
var responseLines = response.Split('\n').ToList();
|
var responseLines = response.Split("%break").ToList();
|
||||||
messageBox.ShowAsync("Command Result: Login", responseLines);
|
messageBox.ShowAsync("Command Result: Login", responseLines);
|
||||||
}
|
}
|
||||||
else if (command == "logout")
|
else if (command == "logout")
|
||||||
{
|
{
|
||||||
string response = await server.Logout();
|
string response = await server.Logout();
|
||||||
// split response into string[] at \n
|
// split response into string[] at \n
|
||||||
var responseLines = response.Split('\n').ToList();
|
var responseLines = response.Split("%break").ToList();
|
||||||
messageBox.ShowAsync("Command Result: Logout", responseLines);
|
messageBox.ShowAsync("Command Result: Logout", responseLines);
|
||||||
}
|
}
|
||||||
else if (command == "get self employee")
|
else if (command == "get self employee")
|
||||||
@ -85,21 +83,21 @@ public class Tester
|
|||||||
{
|
{
|
||||||
string response = await server.ClockIn();
|
string response = await server.ClockIn();
|
||||||
// split response into string[] at \n
|
// split response into string[] at \n
|
||||||
var responseLines = response.Split('\n').ToList();
|
var responseLines = response.Split("%break").ToList();
|
||||||
await messageBox.ShowAsync("Command Result: clock in", responseLines);
|
await messageBox.ShowAsync("Command Result: clock in", responseLines);
|
||||||
}
|
}
|
||||||
else if (command == "clock out")
|
else if (command == "clock out")
|
||||||
{
|
{
|
||||||
string response = await server.ClockOut();
|
string response = await server.ClockOut();
|
||||||
// split response into string[] at \n
|
// split response into string[] at \n
|
||||||
var responseLines = response.Split('\n').ToList();
|
var responseLines = response.Split("%break").ToList();
|
||||||
await messageBox.ShowAsync("Command Result: clock out", responseLines);
|
await messageBox.ShowAsync("Command Result: clock out", responseLines);
|
||||||
}
|
}
|
||||||
else if (command == "clock break")
|
else if (command == "clock break")
|
||||||
{
|
{
|
||||||
string response = await server.ClockBreak();
|
string response = await server.ClockBreak();
|
||||||
// split response into string[] at \n
|
// split response into string[] at \n
|
||||||
var responseLines = response.Split('\n').ToList();
|
var responseLines = response.Split("%break").ToList();
|
||||||
await messageBox.ShowAsync("Command Result: clock break", responseLines);
|
await messageBox.ShowAsync("Command Result: clock break", responseLines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -124,7 +122,7 @@ public class Tester
|
|||||||
{
|
{
|
||||||
using var doc = JsonDocument.Parse(response);
|
using var doc = JsonDocument.Parse(response);
|
||||||
var formatted = JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true });
|
var formatted = JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true });
|
||||||
await messageBox.ShowAsync("Server Response", formatted.Split('\n').ToList());
|
await messageBox.ShowAsync("Server Response", formatted.Split("%break").ToList());
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user