Package com.rsyslog.gui.diaggui

Source Code of com.rsyslog.gui.diaggui.Counters

/* Display some basic rsyslogd counter variables.
*
* Please note that this program requires imdiag to be loaded inside rsyslogd.
*
* Copyright 2009 Rainer Gerhards and Adiscon GmbH.
*
* This file is part of rsyslog.
*
* Rsyslog is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Rsyslog is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Rsyslog.  If not, see <http://www.gnu.org/licenses/>.
*
* A copy of the GPL can be found in the file "COPYING" in this distribution.
*/
package com.rsyslog.gui.diaggui;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

import com.rsyslog.lib.DiagSess;

public class Counters extends Frame {
 
  private TextField MainQItems;
  private TextField RefreshInterval;
  private Checkbox  AutoRefresh;
  private DiagSess diagSess;
  private Timer timer;

  private void createDiagSess() {
    try {
      diagSess = new DiagSess("127.0.0.1", 13500); // TODO: values from GUI
      diagSess.connect();
    }
    catch(IOException e) {
      System.out.println("Exception trying to open diag session:\n" + e.toString());
    }
  }

  private void createGUI() {
    MainQItems = new TextField();
    MainQItems.setColumns(8);
    Panel pCenter = new Panel();
    pCenter.setLayout(new FlowLayout());
    pCenter.add(new Label("MainQ Items:"));
    pCenter.add(MainQItems);
   
    RefreshInterval = new TextField();
    RefreshInterval.setColumns(5);
    RefreshInterval.setText("100");
    AutoRefresh = new Checkbox("Auto Refresh", false);
    AutoRefresh.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
        setAutoRefresh();
      }
     
    });
    Button b = new Button("Refresh now");
    b.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        refreshCounters();
      }
    });
    Panel pSouth = new Panel();
    pSouth.setLayout(new FlowLayout());
    pSouth.add(AutoRefresh);
    pSouth.add(new Label("Interval (ms):"));
    pSouth.add(RefreshInterval);
    pSouth.add(b);
   
    pack();
    setTitle("rsyslogd Counters");
    setLayout(new BorderLayout());
    add(pCenter, BorderLayout.CENTER);
    add(pSouth, BorderLayout.SOUTH);
    setSize(400,500);
  }
 
  public Counters() {
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e){
        Counters.this.dispose();
      }
    });
    createGUI();
    createDiagSess();
    setAutoRefresh();
    setVisible(true);
  }


  private void startTimer() {
    timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
      public void run() {
        refreshCounters();
      }
    }, 0, 100);
  }
 
  private void stopTimer() {
    if(timer != null) {
      timer.cancel();
      timer = null;
    }
  }

  /** set auto-refresh mode. It is either turned on or off, depending on the
   *  status of the relevant check box. */
  private void setAutoRefresh() {
    if(AutoRefresh.getState() == true) {
      startTimer();
    } else {
      stopTimer();
    }
  }
 
  /** refresh counter display from rsyslogd data. Does a network round-trip. */
  private void refreshCounters() {
    try {
      String res = diagSess.request("getmainmsgqueuesize");
      MainQItems.setText(res);
    }
    catch(IOException e) {
      System.out.println("Exception during request:\n" + e.toString());
    }
  }
}
TOP

Related Classes of com.rsyslog.gui.diaggui.Counters

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.