mirror of
https://git.battle-of-pip.de/root/vpr-mitarbeiterverwaltung.git
synced 2025-06-21 00:03:18 +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 StreamWriter writer;
|
||||
private Action<string> onMessageReceived;
|
||||
private Action<string> onCommandReceived;
|
||||
|
||||
public Action<string> OnMessageReceived
|
||||
{
|
||||
get => onMessageReceived;
|
||||
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();
|
||||
|
||||
@ -49,6 +55,7 @@ public class Server
|
||||
{
|
||||
if (message.StartsWith("{") && message.EndsWith("}"))
|
||||
{
|
||||
onCommandReceived?.Invoke(message);
|
||||
Console.WriteLine("Received: " + message);
|
||||
// Parse the JSON response
|
||||
var response = JsonSerializer.Deserialize<JsonResponse>(message);
|
||||
|
@ -14,15 +14,18 @@ public class CommandLibrary
|
||||
|
||||
#region Basic Commands
|
||||
|
||||
[Command("help")]
|
||||
public static string HelpCommand() =>
|
||||
"Available commands:\n" +
|
||||
"1. help - Show this help message\n" +
|
||||
"2. exit - Exit the server\n" +
|
||||
"3. user - User management\n" +
|
||||
"4. settings - Server settings\n" +
|
||||
"5. start - Start the server\n" +
|
||||
"6. stop - Stop the server\n";
|
||||
/*[Command("help")]
|
||||
public static string HelpCommand(string[] args, TcpClient? client, TcpServer? socket)
|
||||
{
|
||||
throw new CommandException("Available commands:%break" +
|
||||
"1. help - Show this help message%break" +
|
||||
"2. exit - Exit the server%break" +
|
||||
"3. user - User management%break" +
|
||||
"4. settings - Server settings%break" +
|
||||
"5. start - Start the server%break" +
|
||||
"6. stop - Stop the server%break");
|
||||
}*/
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -77,7 +77,7 @@ public void ExecuteCommand(string executor,
|
||||
};
|
||||
|
||||
var sendClientMessage = JsonSerializer.Serialize(returnMessage);
|
||||
clientSocket?.SendMessageAsync(client, sendClientMessage + "\n");
|
||||
clientSocket?.SendMessageAsync(client, sendClientMessage + "\r\n");
|
||||
Program.messageSender.Debug($"[COMMANDMANAGER] Response sent to client.");
|
||||
}
|
||||
// If your command threw a CommandException, catch it here:
|
||||
@ -91,7 +91,15 @@ public void ExecuteCommand(string executor,
|
||||
Response = $"Error: {cmdEx.Message}"
|
||||
};
|
||||
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
|
||||
catch (TargetInvocationException ex)
|
||||
@ -113,6 +121,13 @@ public void ExecuteCommand(string executor,
|
||||
else
|
||||
{
|
||||
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"
|
||||
};
|
||||
|
||||
server.OnMessageReceived = (message) =>
|
||||
{
|
||||
ms.Log(message);
|
||||
};
|
||||
server.OnMessageReceived = (message) => ms.Log(message);
|
||||
server.OnCommandReceived = (message) => ms.Log(message);
|
||||
|
||||
while (running)
|
||||
{
|
||||
@ -50,7 +48,7 @@ public class Tester
|
||||
{
|
||||
string response = await server.HelpCommand();
|
||||
// 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);
|
||||
}
|
||||
else if (command == "login")
|
||||
@ -60,14 +58,14 @@ public class Tester
|
||||
|
||||
string response = await server.Login(user, password);
|
||||
// split response into string[] at \n
|
||||
var responseLines = response.Split('\n').ToList();
|
||||
var responseLines = response.Split("%break").ToList();
|
||||
messageBox.ShowAsync("Command Result: Login", responseLines);
|
||||
}
|
||||
else if (command == "logout")
|
||||
{
|
||||
string response = await server.Logout();
|
||||
// split response into string[] at \n
|
||||
var responseLines = response.Split('\n').ToList();
|
||||
var responseLines = response.Split("%break").ToList();
|
||||
messageBox.ShowAsync("Command Result: Logout", responseLines);
|
||||
}
|
||||
else if (command == "get self employee")
|
||||
@ -85,21 +83,21 @@ public class Tester
|
||||
{
|
||||
string response = await server.ClockIn();
|
||||
// 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);
|
||||
}
|
||||
else if (command == "clock out")
|
||||
{
|
||||
string response = await server.ClockOut();
|
||||
// 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);
|
||||
}
|
||||
else if (command == "clock break")
|
||||
{
|
||||
string response = await server.ClockBreak();
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
@ -124,7 +122,7 @@ public class Tester
|
||||
{
|
||||
using var doc = JsonDocument.Parse(response);
|
||||
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
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user