package Applications.ClientsFactory; import org.omg.CosEventCommImpl.*; import org.omg.CosEventChannelAdminImpl.*; import java.awt.event.*; import java.awt.*; import javax.swing.*; import org.omg.CORBA.*; import java.util.*; public class PullSupplierPanel extends JPanel implements EventChannelMonitor, ActionListener { private PullSupplierImpl pullsupplierimpl = new PullSupplierImpl (this); private Any data; private JTextArea textArea = new JTextArea (); private int enviados = 0; private Misc varios = new Misc(); private JButton Conectar = new JButton ("Conectar"); private JButton Desconectar = new JButton ("Desconectar"); private JButton Evento = new JButton ("Evento"); private JButton Rafaga = new JButton ("Rafaga"); private JTextField Canal = new JTextField(); private JTextField Tipo = new JTextField(); private JTextField Direccion= new JTextField(); private JTextField Puerto = new JTextField(); private JTextField Enviados = new JTextField(); private JSplitPane panel_2 = new JSplitPane (JSplitPane.VERTICAL_SPLIT); private JPanel panel_2_1 = (new JPanel () {public Insets getInsets () { return new Insets ( 4, 4, 4, 4 );}} ); private JScrollPane panel_2_2 = new JScrollPane(); public PullSupplierPanel() { try { this.setPreferredSize(new Dimension(650, 175)); this.setLayout(new BorderLayout()); this.add ( panel_2, BorderLayout.CENTER ); panel_2.add ( panel_2_2, JSplitPane.RIGHT ); panel_2.add ( panel_2_1, JSplitPane.LEFT ); panel_2.setEnabled(false); panel_2_2.getViewport().add ( textArea, null ); panel_2_1.setLayout (new GridLayout(5, 2, 2, 2)); panel_2_1.add (varios.CreaLabelTexto ("Canal:" , "Nombre del canal al que se va a conectar." , Canal , "CANAL" , true), null); panel_2_1.add (varios.CreaLabelTexto ("Tipo de canal:" , "Tipo del canal al que se va a conectar." , Tipo , "" , true), null); panel_2_1.add (varios.CreaLabelTexto ("Dirección:" , "Dirección del servidor de nombres." , Direccion , "127.0.0.1", true), null); panel_2_1.add (varios.CreaLabelTexto ("Puerto:" , "Puerto de escucha del servidor de nombres." , Puerto , "900" , true), null); panel_2_1.add (varios.CreaLabelTexto ("Eventos enviados:", "Número global de eventos enviados.", Enviados, "0", false), null); panel_2_1.add (new JPanel ()); Conectar.setToolTipText ("Conectar el Pull Supplier al canal de eventos."); Conectar.addActionListener(this); panel_2_1.add ( Conectar , null ); Desconectar.setToolTipText ( "Desconectar el Pull Supplier del canal de eventos."); Desconectar.addActionListener(this); panel_2_1.add ( Desconectar , null ); Evento.setToolTipText ("Generar un evento para el canal."); Evento.addActionListener(this); panel_2_1.add ( Evento , null ); Rafaga.setToolTipText ("Generar una ráfaga de 2000 eventos consecutivos para el canal."); Rafaga.setNextFocusableComponent(Canal); Rafaga.addActionListener(this); panel_2_1.add ( Rafaga , null ); } catch(Exception exx) { varios.PopUpError (this, "ERROR en constructor de PullSupplierPanel: " + exx); System.out.println ("Error en clase PullSupplierPanel." + exx); } } public void actionPerformed (ActionEvent e) { try { if ( e.getActionCommand().equals("Conectar")) { pullsupplierimpl.connect (Canal.getText(), Tipo.getText(), Direccion.getText(), Puerto.getText()); } else if ( e.getActionCommand().equals("Desconectar")) { pullsupplierimpl.disconnect(); enviados = 0; Enviados.setText("0"); } else if ( e.getActionCommand().equals("Evento")) { Vector v = new Vector (); v.addElement(new String ("Pull")); v.addElement(new Integer (0)); v.addElement(new Date()); data = ORB.init().create_any(); data.insert_Value(v); pullsupplierimpl.push ( data ); } else if ( e.getActionCommand().equals("Rafaga")) { for ( int i=1; i<2001 ; i++ ) { Vector v = new Vector (); v.addElement(new String ("Pull")); v.addElement(new Integer (i)); v.addElement(new Date()); data = ORB.init().create_any(); data.insert_Value(v); pullsupplierimpl.push ( data ); System.out.println ("Pull rafaga " + i ); } } } catch ( org.omg.CORBA.SystemException ex ) { Mensaje (ERROR, "PullConsumerPanel", varios.TraduceSystemException(ex)); } catch(Exception exx) { Mensaje (ERROR, "PullConsumerPanel", exx.toString()); } } public void Destruir () { try { pullsupplierimpl.disconnect(); } catch(Exception exx){} } /* Ahora viene la parte en la que se implementa el interfaz EventChannelMonitor */ public void Mensaje ( int tipo, String origen, String mensaje ) { if ( tipo == this._ERROR ) mensaje = "Error en " + origen + ". "+ mensaje; textArea.append ( mensaje + "\n" ); } public void Accion ( int accion ) { switch ( accion ) { case ENVIADO_PULL: enviados ++; Enviados.setText(""+ enviados); break; case CANAL_DESCONECTA: Mensaje ( INFO, "PullSupplierPanel", "El canal ha desconectado al Pull Supplier." ); break; } } public void insert ( Any data ) { } } e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


DISEÑO E IMPLEMENTACIÓN DEL SERVICIO DE EVENTOS DE CORBA PARA JAVA IDL

: Díaz Caballero, Victor M.
: Ingeniería Telecomunicación
Contenido del proyecto: