public CommandReplicas(string command, View v, TupleSpace ts, Uri add, int id) { cmd = command; payload = new object[] { v, ts }; Sender_uri = add; Sender_id = id; }
public static void CheckCommandsInQueue_thread_Replica() { while (true) { Thread.Sleep(50); //Min time to check commands if (CommLayer_forReplica.GetQueueSize() > 0) //if there is commands { CommandReplicas cmd = CommLayer_forReplica.RemoveFromCommandQueue(); //MyTuple payload = (MyTuple)cmd.GetPayload(); //Object tmp; switch (cmd.GetCommand()) { case "REQUEST_VIEW_AND_IMAGE": //RECEBI UM PEDIDO Console.WriteLine("-----REQUEST_VIEW_AND_IMAGE-----"); //Console.WriteLine("CURRENT VIEW1 ==> " + ServerProgram.GetCurrentViewID().ToString()); //Console.WriteLine("CURRENT IMAGE ==> " + ts.ToString()); GiveBackResultToReplica(cmd.GetURI(), new CommandReplicas("RECEIVE_VIEW_AND_IMAGE", ServerProgram.GetCurrentViewID(), ts, ServerProgram.GetMyAddress(), ServerProgram.GetMyId())); //ENVIO O ACK Console.WriteLine("olaaa"); ServerProgram.SetStateMachine(ServerProgram.STATE_MACHINE_NETWORK_UPDATE_VIEW); break; case "RECEIVE_VIEW_AND_IMAGE": //RECEBI UM AKC Console.WriteLine("-----RECEIVE_VIEW_AND_IMAGE----"); ServerProgram.SetCurrentViewID(cmd.GetProposedView()); //View update ts = cmd.GetTSS(); //tuple space update Console.WriteLine("VIEW RECEBIDA1 ==> " + cmd.GetProposedView().ToString()); Console.WriteLine("IMAGEM RECEBIDA1 ==> " + ts.ToString()); ServerProgram.wait = false; ServerProgram.SetStateMachine(ServerProgram.STATE_MACHINE_NETWORK_RESTART); break; case "REQUEST_VIEW": Console.WriteLine("-----REQUEST_VIEW-----"); //RECEBI UM PEDIDO //Console.WriteLine("CURRENT VIEW2 ==> " + ServerProgram.GetCurrentViewID().ToString()); GiveBackResultToReplica(cmd.GetURI(), new CommandReplicas("RECEIVE_VIEW", ServerProgram.GetCurrentViewID(), null, ServerProgram.GetMyAddress(), ServerProgram.GetMyId())); //ENVIO O ACK ServerProgram.SetStateMachine(ServerProgram.STATE_MACHINE_NETWORK_WAIT); break; case "RECEIVE_VIEW": //RECEBI UM AKC Console.WriteLine("-----RECEIVE_VIEW-----"); if (cmd.GetURI().AbsolutePath == ServerProgram.RootServer.UID.AbsolutePath) { ServerProgram.root_view = cmd.GetProposedView(); //Console.WriteLine("Recebi a view do root ---> " + ServerProgram.root_view.ToString()); } ServerProgram.Proposed_Views.Add(cmd.GetProposedView()); //Console.WriteLine("VIEW RECEBIDA2 ==> " + cmd.GetProposedView().ToString()); ServerProgram.wait = false; ServerProgram.SetStateMachine(ServerProgram.STATE_MACHINE_NETWORK_CHECK_VIEW); break; case "UPDATE_VIEW": //RECEBI UM PEDIDO DO ROOT PARA FAZER UPDATE DA VIEW Console.WriteLine("-----UPDATE_VIEW-----"); ServerProgram.SetCurrentViewID(cmd.GetProposedView()); //View update //Console.WriteLine("NOVA VIEW ==> " + ServerProgram.GetCurrentViewID().ToString()); GiveBackResultToReplica(cmd.GetURI(), new CommandReplicas("ACK_UPDATE_VIEW", ServerProgram.GetCurrentViewID(), null, ServerProgram.GetMyAddress(), ServerProgram.GetMyId())); //ENVIO O ACK ServerProgram.SetStateMachine(ServerProgram.STATE_MACHINE_NETWORK_WAIT); break; case "ACK_UPDATE_VIEW": Console.WriteLine("-----ACK_UPDATE_VIEW-----"); //RECEBI ACK DE CONFIRMAÇÃO DA ALTERAÇÃO DA VIEW ServerProgram.wait = false; ServerProgram.SetStateMachine(ServerProgram.STATE_MACHINE_NETWORK_RESTART); break; } } } }
public static void SetTupleSpace(Object img) { ts = (TupleSpace)img; }