From 589ceda17a7f15d584afda081073cd986a81a6d7 Mon Sep 17 00:00:00 2001 From: Bernardo Valente Date: Fri, 8 Nov 2019 23:47:23 +0000 Subject: [PATCH] code cleanup --- chat/Makefile | 2 - msdad/client/Client.cs | 56 +++++++++++++++------------ msdad/lib/IClient.cs | 8 +++- msdad/lib/IPCS.cs | 5 +++ msdad/lib/IServer.cs | 5 +++ msdad/lib/msdad.cs | 18 +++++++-- msdad/pcs/Program.cs | 1 + msdad/puppetMaster/MainWindow.xaml.cs | 17 ++++++-- msdad/puppetMaster/PuppetMaster.cs | 13 ++----- msdad/scripts/success1_client1 | 2 +- msdad/scripts/success1_pm | 2 +- msdad/server/Server.cs | 2 +- 12 files changed, 83 insertions(+), 48 deletions(-) diff --git a/chat/Makefile b/chat/Makefile index 3395004..4e872e4 100644 --- a/chat/Makefile +++ b/chat/Makefile @@ -22,5 +22,3 @@ run_client: run_client_ui: #dotnet run -p ClientUI mono ClientUI/bin/Debug/net472/ClientUI.exe - -#TODO add for loop to create multiple clients diff --git a/msdad/client/Client.cs b/msdad/client/Client.cs index 4ad9185..b9812f3 100644 --- a/msdad/client/Client.cs +++ b/msdad/client/Client.cs @@ -51,6 +51,7 @@ public void sendMeeting(MeetingProposal meeting){ meetingList.Add(meeting.topic,meeting); } + //execute script file void executeScript(string fileName){ //load file and get commands @@ -65,6 +66,7 @@ void executeScript(string fileName){ } } + //execute one command public void executeCommand(string command){ //receives a command and executes respective function string[] cmds = command.Split(' '); @@ -98,7 +100,6 @@ public void executeCommand(string command){ } } - //Lists all available meetings void list(){ //print meetings @@ -109,18 +110,8 @@ void list(){ IServer server = (IServer) Activator.GetObject( typeof(IServer), server_url); - ListDelegate del = new ListDelegate(server.getMeetings); //TODO replace ping - del.BeginInvoke(listCallback,null); - } - //delegate - delegate Dictionary ListDelegate(); - //callback - void listCallback(IAsyncResult ar){ - //will be called when delegate is over - ListDelegate del = (ListDelegate)((AsyncResult)ar).AsyncDelegate; - meetingList.Clear(); - meetingList = del.EndInvoke(ar); - //TODO + ListDelegate del = new ListDelegate(server.getMeetings); + del.BeginInvoke(updateCallback,null); } //Creates a new meeting @@ -148,11 +139,6 @@ void create(string[] args){ MeetingProposal meeting = new MeetingProposal(this.username, meeting_topic, min_attendees, slotList, invitees); - //what to do with the meeting? - - //guardar meeting - - //get server IServer server = (IServer) Activator.GetObject( typeof(IServer), @@ -161,24 +147,25 @@ void create(string[] args){ //try to create meeting try{ server.createMeeting(meeting); - } catch(Exception ex){ - - //TODO nossas excepcoes + } catch(MeetingException ex){ + Console.WriteLine(ex.Message); + return; + }catch(Exception ex){ Console.WriteLine("connection with server failed"); Console.WriteLine(ex.Message); return; } - //pedir mais meetings? meetingList.Add(meeting.topic, meeting); - + } //Joins an existing meeting void join(string[] args){ string meeting_topic = args[1]; int number_of_slots = Int32.Parse(args[2]); + //parse slots List slotList = new List(); for(int i = 3; i < number_of_slots + 3;i++){ string[] str = args[i].Split(','); @@ -186,16 +173,19 @@ void join(string[] args){ slotList.Add(slot); } + //get server IServer server = (IServer) Activator.GetObject( typeof(IServer), server_url); - //TODO try catch + + //try to join meeting try{ server.joinClient(this.GetInfo(), meeting_topic, slotList); }catch(MeetingException ex){ Console.WriteLine(ex.Message); - } + } + } //Closes a meeting @@ -203,11 +193,15 @@ void close(string meeting_topic){ IServer server = (IServer) Activator.GetObject( typeof(IServer), server_url); + //try to close meeting try{ server.closeMeeting(meeting_topic, this.GetInfo()); } catch(MeetingException ex){ Console.WriteLine(ex.Message); } + //get meetings + ListDelegate del = new ListDelegate(server.getMeetings); + del.BeginInvoke(updateCallback,null); } @@ -229,6 +223,17 @@ public void status(){ Console.WriteLine(key.Value); } } + + //update meetings async + //delegate + delegate Dictionary ListDelegate(); + //callback + void updateCallback(IAsyncResult ar){ + //will be called when delegate is over + ListDelegate del = (ListDelegate)((AsyncResult)ar).AsyncDelegate; + meetingList.Clear(); + meetingList = del.EndInvoke(ar); + } } //interface for the Puppet Master @@ -253,6 +258,7 @@ public void wait(int x){ return; } + //print client status public void statusPuppeteer(){ client.status(); } diff --git a/msdad/lib/IClient.cs b/msdad/lib/IClient.cs index f51d53a..7c6124c 100644 --- a/msdad/lib/IClient.cs +++ b/msdad/lib/IClient.cs @@ -1,5 +1,7 @@ -using System.Collections.Generic; using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + namespace lib{ @@ -54,5 +56,9 @@ public ClientException(string message) public ClientException(string message, Exception inner) : base(message, inner){ } + + public ClientException(SerializationInfo info, StreamingContext context) + : base(info, context){ + } } } \ No newline at end of file diff --git a/msdad/lib/IPCS.cs b/msdad/lib/IPCS.cs index 1b21eaa..e8186a1 100644 --- a/msdad/lib/IPCS.cs +++ b/msdad/lib/IPCS.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.Serialization; namespace lib{ @@ -26,5 +27,9 @@ public PCSException(string message) public PCSException(string message, Exception inner) :base(message, inner){ } + + public PCSException(SerializationInfo info, StreamingContext context) + : base(info, context){ + } } } \ No newline at end of file diff --git a/msdad/lib/IServer.cs b/msdad/lib/IServer.cs index d394dc5..77ff36f 100644 --- a/msdad/lib/IServer.cs +++ b/msdad/lib/IServer.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Runtime.Serialization; namespace lib{ @@ -79,5 +80,9 @@ public ServerException(string message) public ServerException(string message, Exception inner) : base(message, inner){ } + + public ServerException(SerializationInfo info, StreamingContext context) + : base(info, context){ + } } } \ No newline at end of file diff --git a/msdad/lib/msdad.cs b/msdad/lib/msdad.cs index 79397b0..d52fb64 100644 --- a/msdad/lib/msdad.cs +++ b/msdad/lib/msdad.cs @@ -98,15 +98,26 @@ public MeetingProposal(string coordinator, string topic, int minParticipants, public override string ToString(){ string text = ""; - text += "Coordinator: " + coordinator + "\n"; text += "Topic: " + topic + "\n"; + text += "Coordinator: " + coordinator + "\n"; text += "Minimum Participants: " + minParticipants.ToString() + "\n"; + text += "Slots:\n"; foreach(Slot slot in slotList){ - text += slot.location + ':' + slot.date + "\n"; + text += "\t" + slot.location + ':' + slot.date + "\n"; } + text += "Invited clients:\n"; foreach(string invitee in invitees){ - text += invitee + "\n"; + text += "\t" + invitee + "\n"; + } + text += "Participants\n"; + foreach(Participant participant in participants){ + text += "\t" + participant.client.username + "\n"; + } + if (open){ + text += "This meeting is open"; + } else{ + text += "This meeting is closed"; } return text; @@ -134,7 +145,6 @@ public MeetingException(string message, Exception inner) public MeetingException(SerializationInfo info, StreamingContext context) : base(info, context){ - } } } \ No newline at end of file diff --git a/msdad/pcs/Program.cs b/msdad/pcs/Program.cs index bdf7895..03769c0 100644 --- a/msdad/pcs/Program.cs +++ b/msdad/pcs/Program.cs @@ -58,6 +58,7 @@ public ClientInfo createClient(string username, string client_url, string server public ServerInfo createServer(string server_id, string url, string max_faults, string min_delay, string max_delay){ + //create server process string cPath = AppDomain.CurrentDomain.BaseDirectory; string filePath = Path.Combine(cPath, "../../../../server/bin/Debug/net472/server.exe"); diff --git a/msdad/puppetMaster/MainWindow.xaml.cs b/msdad/puppetMaster/MainWindow.xaml.cs index 4b77ae6..8f571a8 100644 --- a/msdad/puppetMaster/MainWindow.xaml.cs +++ b/msdad/puppetMaster/MainWindow.xaml.cs @@ -125,9 +125,9 @@ private void InitializeComponent(){ AvaloniaXamlLoader.Load(this); } - //Buttons here! only 499$ each + //Buttons here! - //load script and run it + //load script file and run it public void executeScript(object sender, RoutedEventArgs e){ //load file and get commands @@ -143,6 +143,7 @@ public void executeScript(object sender, RoutedEventArgs e){ } } + //create server public void createServer(object sender, RoutedEventArgs e){ string server_id = createServerID.Text; @@ -155,6 +156,7 @@ public void createServer(object sender, RoutedEventArgs e){ } + //create client public void createClient(object sender, RoutedEventArgs e){ string username = createClient_username.Text; @@ -165,6 +167,7 @@ public void createClient(object sender, RoutedEventArgs e){ puppetMaster.createClient(username, url, server_url, script_file); } + //add room public void addRoom(object sender, RoutedEventArgs e){ string location = room_location.Text; @@ -174,37 +177,41 @@ public void addRoom(object sender, RoutedEventArgs e){ puppetMaster.addRoom(location, capacity, name); } - + //print clients and servers status public void status(object sender, RoutedEventArgs e){ puppetMaster.status(); } + //crash server public void crash(object sender, RoutedEventArgs e){ string server_id = crashServerID.Text; puppetMaster.crashServer(server_id); } + //freeze server public void freezeServer(object sender, RoutedEventArgs e){ string server_id = freezeServerID.Text; puppetMaster.freezeServer(server_id); } + //unfreeze server public void unfreezeServer(object sender, RoutedEventArgs e){ string server_id = unfreezeServerID.Text; puppetMaster.unfreezeServer(server_id); } + //freeze puppetmaster public void waitTime(object sender, RoutedEventArgs e){ string time = waitTimeBox.Text; puppetMaster.wait(time); } - //update ui + //update client list public void addClient(ClientInfo client){ TextBlock block = new TextBlock(); block.Name = client.username; @@ -212,6 +219,7 @@ public void addClient(ClientInfo client){ clientPanel.Children.Add(block); } + //update server list public void addServer(ServerInfo server){ TextBlock block = new TextBlock(); block.Text = server.server_id; @@ -219,6 +227,7 @@ public void addServer(ServerInfo server){ serverPanel.Children.Add(block); } + //update server list public void removeServer(ServerInfo server){ TextBlock block = this.Find(server.server_id); serverPanel.Children.Remove(block); diff --git a/msdad/puppetMaster/PuppetMaster.cs b/msdad/puppetMaster/PuppetMaster.cs index 3180c9c..8be40de 100644 --- a/msdad/puppetMaster/PuppetMaster.cs +++ b/msdad/puppetMaster/PuppetMaster.cs @@ -85,7 +85,6 @@ public void executeCommand(string command){ } //Debug Console.WriteLine(command); - } public void createServer(string server_id, string server_url, string max_faults, @@ -103,18 +102,18 @@ public void createServer(string server_id, string server_url, string max_faults, serverInfo = pcs.createServer(server_id, server_url, max_faults, min_delay, max_delay); } catch(Exception ex){ - //TODO catch diferent types of execeptions + //TODO catch PCS types of execeptions Console.WriteLine("pcs connection failed"); Console.WriteLine(ex.Message); return; } - //send all rooms available + //send all available rooms IServerPuppeteer server = (IServerPuppeteer) Activator.GetObject( typeof(IServerPuppeteer), server_url+"Puppeteer"); try{ - Thread.Sleep(2000); //TODO: ALTERAR + Thread.Sleep(2000); //TODO: make async server.populate(locationList); } catch(Exception ex){ Console.WriteLine("connection to server failed"); @@ -124,7 +123,6 @@ public void createServer(string server_id, string server_url, string max_faults, //save server serverList.Add(server_id, serverInfo); window.addServer(serverInfo); - } public void createClient(string username, string client_url, string server_url, @@ -141,7 +139,7 @@ public void createClient(string username, string client_url, string server_url, clientInfo = pcs.createClient(username, client_url, server_url, script_file); } catch(Exception ex){ - //TODO catch diferent types of execeptions + //TODO catch PCS types of execeptions Console.WriteLine("pcs connection failed"); Console.WriteLine(ex.Message); return; @@ -179,7 +177,6 @@ public void status(){ //make all servers and clients print status //foreach servers foreach(KeyValuePair pair in serverList){ - Console.WriteLine(pair.Value.url); IServerPuppeteer server = (IServerPuppeteer) Activator.GetObject( typeof(IServerPuppeteer), pair.Value.url+"Puppeteer"); @@ -191,14 +188,12 @@ public void status(){ } //foreach clients foreach(KeyValuePair pair in clientList){ - Console.WriteLine(pair.Value.client_url); IClientPuppeteer client = (IClientPuppeteer) Activator.GetObject( typeof(IClientPuppeteer), pair.Value.client_url+"Puppeteer"); try{ client.statusPuppeteer(); }catch(Exception ex){ - Console.WriteLine("aro!"); Console.WriteLine(ex.Message); } } diff --git a/msdad/scripts/success1_client1 b/msdad/scripts/success1_client1 index 4bd9d63..03696cc 100644 --- a/msdad/scripts/success1_client1 +++ b/msdad/scripts/success1_client1 @@ -3,5 +3,5 @@ create topic2 2 1 0 Lisboa,2020-01-02 list join topic1 1 Porto,2020-02-03 join topic2 1 Lisboa,2020-01-02 -wait 1000 +wait 500 close topic1 \ No newline at end of file diff --git a/msdad/scripts/success1_pm b/msdad/scripts/success1_pm index d25f1c5..f0181c4 100644 --- a/msdad/scripts/success1_pm +++ b/msdad/scripts/success1_pm @@ -5,7 +5,7 @@ Wait 500 Server s1 tcp://localhost:3001/server1 0 100 200 Wait 500 Client c1 tcp://localhost:4001/client1 tcp://localhost:3001/server1 success1_client1 -Wait 500 +Wait 5000 Status Wait 3000 Freeze s1 diff --git a/msdad/server/Server.cs b/msdad/server/Server.cs index 796c651..be40533 100644 --- a/msdad/server/Server.cs +++ b/msdad/server/Server.cs @@ -186,7 +186,7 @@ public void joinClient(ClientInfo client, string meeting_topic, List slotL //see if the client is invited if(meeting.invitees.Count == 0 || meeting.invitees.Contains(client.username)){ - //any client can join + //client can join meeting.participants.Add(new Participant(client, slotList)); } else {