public bool SetaUser(String login, String senha) { try { this.lo = login; this.pass = senha; // O primeiro objeto a ser enviado é uma string que vai indicar // ao servidor se eh uma conexão para trocas de objetos no nível do // GEF ou nível do ArgoUML. Devo enviar também o login e a senha ArrayList l = new ArrayList(); l.Add(this.lo); // l.Add(this.pass); // this.EnviaEvento(l, "ARGO"); // Aqui efetivamente envia os dados! Byte[] ByteGet; ByteGet = getByteArrayWithObject((Object)objAenviar[0]); socket.Send(ByteGet, ByteGet.Length, 0); objAenviar.Clear(); // Recebendo a resposta byte[] bytes = new byte[1024]; int bytesRec = socket.Receive(bytes); ArrayList list = (ArrayList)getObjectWithByteArray(bytes); Object o = list[0]; String nomeEvento = (String)list[1]; if (nomeEvento.Equals("ERRO")) { MessageBox.Show("Login ou senha incorretos!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } else { // Aqui vou armazenar as informações que vão ser colocadas na tabela! if (nomeEvento.Equals("PROT_lista_sessoes")) { ArrayList se = (ArrayList)o; // Colocando os nomes das sessões colaborativas this.listaSessoes = se; // Agora colocando a cor do telepointer String id = (String)list[2]; Color c = (Color)list[3]; this.setaCorTelepointer(c); this.setaIdTelepointer(id); } // Iniciando a Thread que vai receber os dados this.cr = new ClienteRecebe(socket); ThreadStart threadDelegate = new ThreadStart(this.cr.run); tClienteRecebe = new Thread(threadDelegate); tClienteRecebe.Start(); // Iniciando a Thread... return(true); } } catch (Exception e) { MessageBox.Show("Exception in ClienteConecta " + e.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } }
public bool SetaUser(String login,String senha) { try { this.lo = login; this.pass = senha; // O primeiro objeto a ser enviado é uma string que vai indicar // ao servidor se eh uma conexão para trocas de objetos no nível do // GEF ou nível do ArgoUML. Devo enviar também o login e a senha ArrayList l = new ArrayList(); l.Add(this.lo); // l.Add(this.pass); // this.EnviaEvento(l,"ARGO"); // Aqui efetivamente envia os dados! Byte[] ByteGet; ByteGet = getByteArrayWithObject((Object) objAenviar[0]); socket.Send(ByteGet, ByteGet.Length, 0); objAenviar.Clear(); // Recebendo a resposta byte[] bytes = new byte[1024]; int bytesRec = socket.Receive(bytes); ArrayList list = (ArrayList) getObjectWithByteArray(bytes); Object o = list[0]; String nomeEvento = (String) list[1]; if (nomeEvento.Equals("ERRO")) { MessageBox.Show("Login ou senha incorretos!" , Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } else { // Aqui vou armazenar as informações que vão ser colocadas na tabela! if (nomeEvento.Equals("PROT_lista_sessoes")) { ArrayList se = (ArrayList) o; // Colocando os nomes das sessões colaborativas this.listaSessoes = se; // Agora colocando a cor do telepointer String id = (String) list[2]; Color c = (Color) list[3]; this.setaCorTelepointer(c); this.setaIdTelepointer(id); } // Iniciando a Thread que vai receber os dados this.cr = new ClienteRecebe(socket); ThreadStart threadDelegate = new ThreadStart(this.cr.run); tClienteRecebe = new Thread(threadDelegate); tClienteRecebe.Start(); // Iniciando a Thread... return true; } } catch (Exception e) { MessageBox.Show("Exception in ClienteConecta " + e.Message , Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } }
public void run() { System.Threading.Thread.CurrentThread.Priority = ThreadPriority.Highest; try { bool clientTalking = true; //a loop that reads from and writes to the socket while (clientTalking) { //get what client wants to say... byte[] bytes = new byte[8192]; // 8 KB de dados int bytesRec = this.socket.Receive(bytes); // System.Diagnostics.Debug.WriteLine("----- Recebido... -----"); ArrayList list = (ArrayList) getObjectWithByteArray(bytes); Object o = list[0]; String nomeEvento = (String) list[1]; // EVENTOS DO ARGO if (nomeEvento.Equals("PROT_atualiza_modelo_cliente")) { } if (nomeEvento.Equals("PROT_atualiza_modelo_cliente_inicial")) { ArrayList ListDoc = (ArrayList) o; // Global.main.OpenForCollaboration( ); Global.main.Invoke(new MainForm.DelegateOpenMetod(Global.main.OpenForCollaboration) ,new object[] { (TextWriter) ListDoc[0] }); } // Recebeu a notificação que algum cliente entrou na da sessão! if (nomeEvento.Equals("PROT_inicio_sessao")) { } // Recebeu a notificação que algum cliente saiu da sessão! if (nomeEvento.Equals("PROT_fim_sessao")) { } // Esta ação foi removida para a experiência /* if (nomeEvento.equals("ActionDeleteFromDiagram-actionPerformed")) ActionDeleteFromDiagram.SINGLETON.actionPerformedImpl((ActionEvent) o); */ // EVENTOS DO GEF // Desenho do TelePointer! #region mouseMovedPointer if (nomeEvento.Equals("mouseMovedPointer")) { /* // Sem os telePointers por enquanto ArrayList dados = (ArrayList) o; FigPointer fp = Global.main.fpA; String Id_tele = (String) dados[2]; if (Id_tele.Equals("1") ) fp = Global.main.fpA; if (Id_tele.Equals("2") ) fp = Global.main.fpB; if (Id_tele.Equals("3") ) fp = Global.main.fpC; if (Id_tele.Equals("4") ) fp = Global.main.fpD; fp.setCor((Color) dados[1] ); fp.setNome((String) dados[3]); fp.setLocation((Point) dados[0]); */ } #endregion #region inkoverlay_Stroke if (nomeEvento.Equals("inkoverlay_Stroke")) { ArrayList dados = (ArrayList) o; Ink x = new Ink(); x.Load( (byte[]) dados[0] ); Stroke s = x.Strokes[x.Strokes.Count-1]; // Testes: Adicionando a coleção de strokes! Global.main.doc.Ink.CreateStroke(s.GetPoints()); InkCollectorStrokeEventArgs e = new InkCollectorStrokeEventArgs(null ,s , false); // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateToMethod(Global.main.inkoverlay_StrokeImpl),new object[] { e }); } #endregion #region inkoverlay_StrokesDeleting if (nomeEvento.Equals("inkoverlay_StrokesDeleting")) { ArrayList dados = (ArrayList) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.inkoverlay_StrokesDeletingImpl),new object[] { dados }); } #endregion #region inkoverlay_SelectionMovedOrResized if (nomeEvento.Equals("inkoverlay_SelectionMovedOrResized")) { ArrayList dados = (ArrayList) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.inkoverlay_SelectionMovedOrResizedImpl),new object[] { dados }); } #endregion #region hover_EditCloneClicked if (nomeEvento.Equals("hover_EditCloneClicked")) { ArrayList dados = (ArrayList) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.hover_EditCloneClickedImpl),new object[] { dados }); } #endregion #region hover_EditStraightenClicked if (nomeEvento.Equals("hover_EditStraightenClicked")) { ArrayList dados = (ArrayList) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.hover_EditStraightenClickedImpl),new object[] { dados }); } #endregion #region hover_EditPropertiesClicked if (nomeEvento.Equals("hover_EditPropertiesClicked")) { ArrayList dados = (ArrayList) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.hover_EditPropertiesClickedImpl),new object[] { dados }); } #endregion // Controles da simulação remota #region hover_AnimateClicked_Start if (nomeEvento.Equals("Start")) { // É preciso criar outra Thread aqui para continuar recebendo os dados.... // E depois é preciso terminá-la cr = new ClienteRecebe(this.socket); ThreadStart threadDelegate = new ThreadStart(cr.run); Thread tClienteRecebe = new Thread(threadDelegate); tClienteRecebe.Start(); Object dados = (Object) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedStartImpl),new object[] { dados }); /* tClienteRecebe.Abort(); Thread.Sleep(5); cr = null; */ } #endregion #region hover_AnimateClicked_Stop if (nomeEvento.Equals("Stop")) { Object dados = (Object) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedStopImpl),new object[] { dados }); // System.Threading.Thread.CurrentThread.Abort(); // É preciso cometer suicídio, ou seja, essa Thread deve se auto-terminar if(cr != null) return; } #endregion #region hover_AnimateClicked_Pause if (nomeEvento.Equals("Pause")) { Object dados = (Object) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedPauseImpl) ,new object[] { dados }); } #endregion #region hover_AnimateClicked_Resume if (nomeEvento.Equals("Resume")) { Object dados = (Object) o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedResumeImpl) ,new object[] { dados }); } #endregion } } catch (ThreadAbortException e) { MessageBox.Show("ThreadAbortException in ClienteRecebe:" + e.Message , Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } catch (Exception e) { MessageBox.Show("Exception in ClienteRecebe:" + e.Message , Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
public void run() { System.Threading.Thread.CurrentThread.Priority = ThreadPriority.Highest; try { bool clientTalking = true; //a loop that reads from and writes to the socket while (clientTalking) { //get what client wants to say... byte[] bytes = new byte[8192]; // 8 KB de dados int bytesRec = this.socket.Receive(bytes); // System.Diagnostics.Debug.WriteLine("----- Recebido... -----"); ArrayList list = (ArrayList)getObjectWithByteArray(bytes); Object o = list[0]; String nomeEvento = (String)list[1]; // EVENTOS DO ARGO if (nomeEvento.Equals("PROT_atualiza_modelo_cliente")) { } if (nomeEvento.Equals("PROT_atualiza_modelo_cliente_inicial")) { ArrayList ListDoc = (ArrayList)o; // Global.main.OpenForCollaboration( ); Global.main.Invoke(new MainForm.DelegateOpenMetod(Global.main.OpenForCollaboration), new object[] { (TextWriter)ListDoc[0] }); } // Recebeu a notificação que algum cliente entrou na da sessão! if (nomeEvento.Equals("PROT_inicio_sessao")) { } // Recebeu a notificação que algum cliente saiu da sessão! if (nomeEvento.Equals("PROT_fim_sessao")) { } // Esta ação foi removida para a experiência /* if (nomeEvento.equals("ActionDeleteFromDiagram-actionPerformed")) * ActionDeleteFromDiagram.SINGLETON.actionPerformedImpl((ActionEvent) o); */ // EVENTOS DO GEF // Desenho do TelePointer! #region mouseMovedPointer if (nomeEvento.Equals("mouseMovedPointer")) { /* * // Sem os telePointers por enquanto * ArrayList dados = (ArrayList) o; * * FigPointer fp = Global.main.fpA; * String Id_tele = (String) dados[2]; * * if (Id_tele.Equals("1") ) fp = Global.main.fpA; * if (Id_tele.Equals("2") ) fp = Global.main.fpB; * if (Id_tele.Equals("3") ) fp = Global.main.fpC; * if (Id_tele.Equals("4") ) fp = Global.main.fpD; * * fp.setCor((Color) dados[1] ); * fp.setNome((String) dados[3]); * * fp.setLocation((Point) dados[0]); */ } #endregion #region inkoverlay_Stroke if (nomeEvento.Equals("inkoverlay_Stroke")) { ArrayList dados = (ArrayList)o; Ink x = new Ink(); x.Load((byte[])dados[0]); Stroke s = x.Strokes[x.Strokes.Count - 1]; // Testes: Adicionando a coleção de strokes! Global.main.doc.Ink.CreateStroke(s.GetPoints()); InkCollectorStrokeEventArgs e = new InkCollectorStrokeEventArgs(null, s, false); // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateToMethod(Global.main.inkoverlay_StrokeImpl), new object[] { e }); } #endregion #region inkoverlay_StrokesDeleting if (nomeEvento.Equals("inkoverlay_StrokesDeleting")) { ArrayList dados = (ArrayList)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.inkoverlay_StrokesDeletingImpl), new object[] { dados }); } #endregion #region inkoverlay_SelectionMovedOrResized if (nomeEvento.Equals("inkoverlay_SelectionMovedOrResized")) { ArrayList dados = (ArrayList)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.inkoverlay_SelectionMovedOrResizedImpl), new object[] { dados }); } #endregion #region hover_EditCloneClicked if (nomeEvento.Equals("hover_EditCloneClicked")) { ArrayList dados = (ArrayList)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.hover_EditCloneClickedImpl), new object[] { dados }); } #endregion #region hover_EditStraightenClicked if (nomeEvento.Equals("hover_EditStraightenClicked")) { ArrayList dados = (ArrayList)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.hover_EditStraightenClickedImpl), new object[] { dados }); } #endregion #region hover_EditPropertiesClicked if (nomeEvento.Equals("hover_EditPropertiesClicked")) { ArrayList dados = (ArrayList)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateEraseMethod(Global.main.hover_EditPropertiesClickedImpl), new object[] { dados }); } #endregion // Controles da simulação remota #region hover_AnimateClicked_Start if (nomeEvento.Equals("Start")) { // É preciso criar outra Thread aqui para continuar recebendo os dados.... // E depois é preciso terminá-la cr = new ClienteRecebe(this.socket); ThreadStart threadDelegate = new ThreadStart(cr.run); Thread tClienteRecebe = new Thread(threadDelegate); tClienteRecebe.Start(); Object dados = (Object)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedStartImpl), new object[] { dados }); /* tClienteRecebe.Abort(); * Thread.Sleep(5); * cr = null; */ } #endregion #region hover_AnimateClicked_Stop if (nomeEvento.Equals("Stop")) { Object dados = (Object)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedStopImpl), new object[] { dados }); // System.Threading.Thread.CurrentThread.Abort(); // É preciso cometer suicídio, ou seja, essa Thread deve se auto-terminar if (cr != null) { return; } } #endregion #region hover_AnimateClicked_Pause if (nomeEvento.Equals("Pause")) { Object dados = (Object)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedPauseImpl), new object[] { dados }); } #endregion #region hover_AnimateClicked_Resume if (nomeEvento.Equals("Resume")) { Object dados = (Object)o; // Precisa utilizar delegates, pois existem problemas quando uma Thread que não é // o formulário atualiza a interface gráfica Global.main.Invoke(new MainForm.DelegateSimulationMetod(Global.main.hover_AnimateClickedResumeImpl), new object[] { dados }); } #endregion } } catch (ThreadAbortException e) { MessageBox.Show("ThreadAbortException in ClienteRecebe:" + e.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } catch (Exception e) { MessageBox.Show("Exception in ClienteRecebe:" + e.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); } }