cdev-1.7.2n

This commit is contained in:
2022-12-13 12:44:04 +01:00
commit b3b88fc333
1357 changed files with 338883 additions and 0 deletions

View File

@@ -0,0 +1,592 @@
//-----------------------------------------------------------------------------
// Copyright (c) 1994,1995 Southeastern Universities Research Association,
// Continuous Electron Beam Accelerator Facility
//
// This software was developed under a United States Government license
// described in the NOTICE file included as part of this distribution.
//
// Jefferson Lab HPC Group, 12000 Jefferson Ave., Newport News, VA 23606
//-----------------------------------------------------------------------------
//
// Description:
// JAVA Applet for rsvc name server
//
// Author:
// Jie Chen
// Jefferson Lab HPC Group
//
// Revision History:
// $Log: rsvcDisplay.java,v $
// Revision 1.1.1.1 2000/05/23 15:12:50 pal
// cdev_psi_1.7.2
//
// Revision 1.3 1999/12/14 15:38:16 chen
// Add scrollbar to display
//
// Revision 1.2 1999/10/18 17:16:06 chen
// minor changes
//
// Revision 1.1 1999/10/18 17:12:42 chen
// *** empty log message ***
//
//
//
//
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import rsvcData;
import rsvcDataEntry;
import rsvcClient;
import rsvcEventHandler;
import rsvcConfig;
public class rsvcDisplay extends Applet implements Runnable, rsvcEventHandler
{
// display tag names
private final String[] tags_ = {"name","domain","status","host", "port", "owner"};
private final int numtags_ = 6;
// top level scroll pane
private ScrollPane sclp_ = null;
// top level panel
private Panel dpanel_ = null;
// title field of display
private Label title_ = null;
// information field of display
private Label info_ = null;
// maximum number of entries
private final int size_ = 40;
// current number of entries
private int num_ = 0;
// category filed labels
private Label nameLabel_ = null;
private Label domainLabel_ = null;
private Label statusLabel_ = null;
private Label hostLabel_ = null;
private Label portLabel_ = null;
private Label userLabel_ = null;
// diffrent fields
private TextField[] name_;
private TextField[] domain_;
private TextField[] status_;
private TextField[] host_;
private TextField[] port_;
private TextField[] user_;
// layout
private GridBagLayout layout_ = null;
private GridBagConstraints c_ = null;
// network connection
private rsvcClient client_ = null;
private String serverHost_ = null;
private int serverPort_ = 0;
// seperate thread to handle clean up information box
private Thread timerThread_ = null;
public void setServerHost (String host)
{
serverHost_ = host;
}
public void setServerPort (int p)
{
serverPort_ = p;
}
private void startTimerThread ()
{
if (timerThread_ == null) {
timerThread_ = new Thread (this);
timerThread_.start();
}
else
timerThread_.resume ();
}
private void createLabel (String label)
{
Font lfont = new Font ("times", Font.BOLD, 14);
Color lc = Color.blue;
c_.weightx = 0;
c_.gridwidth = GridBagConstraints.REMAINDER;
title_ = new Label (label, Label.CENTER);
title_.setFont (lfont);
title_.setForeground (lc);
layout_.setConstraints(title_, c_);
dpanel_.add(title_);
}
private void createInfoLabel ()
{
Font lfont = new Font ("times", Font.BOLD, 12);
c_.weightx = 0;
c_.gridwidth = GridBagConstraints.REMAINDER;
info_ = new Label ();
info_.setFont (lfont);
layout_.setConstraints(info_, c_);
dpanel_.add (info_);
}
private void setInformation (String info)
{
info_.setText (info);
}
private void clearInformation ()
{
info_.setText (null);
}
private void createFieldLabels ()
{
Font lfont = new Font ("helvetica", Font.ITALIC, 12);
c_.weightx = 1;
c_.gridwidth = 1;
nameLabel_ = new Label ("Name", Label.CENTER);
nameLabel_.setFont (lfont);
layout_.setConstraints(nameLabel_, c_);
dpanel_.add(nameLabel_);
domainLabel_ = new Label ("Domain", Label.CENTER);
domainLabel_.setFont (lfont);
layout_.setConstraints(domainLabel_, c_);
dpanel_.add(domainLabel_);
statusLabel_ = new Label ("Status", Label.CENTER);
statusLabel_.setFont (lfont);
layout_.setConstraints(statusLabel_, c_);
dpanel_.add(statusLabel_);
c_.gridwidth = 2;
hostLabel_ = new Label ("Host", Label.CENTER);
hostLabel_.setFont (lfont);
layout_.setConstraints(hostLabel_, c_);
dpanel_.add(hostLabel_);
c_.gridwidth = 1;
portLabel_ = new Label ("Port", Label.CENTER);
portLabel_.setFont (lfont);
layout_.setConstraints(portLabel_, c_);
dpanel_.add(portLabel_);
c_.gridwidth = GridBagConstraints.REMAINDER;
userLabel_ = new Label ("User Name", Label.CENTER);
userLabel_.setFont (lfont);
layout_.setConstraints(userLabel_, c_);
dpanel_.add(userLabel_);
}
private void createEmptyFields (int index)
{
c_.gridwidth = 1;
name_[index] = new TextField (10);
name_[index].setEditable (false);
layout_.setConstraints(name_[index], c_);
dpanel_.add(name_[index]);
domain_[index] = new TextField (10);
domain_[index].setEditable (false);
layout_.setConstraints(domain_[index], c_);
dpanel_.add(domain_[index]);
status_[index] = new TextField (10);
status_[index].setEditable (false);
layout_.setConstraints(status_[index], c_);
dpanel_.add(status_[index]);
c_.gridwidth = 2;
host_[index] = new TextField (20);
host_[index].setEditable (false);
layout_.setConstraints(host_[index], c_);
dpanel_.add(host_[index]);
port_[index] = new TextField (10);
port_[index].setEditable (false);
layout_.setConstraints(port_[index], c_);
dpanel_.add(port_[index]);
c_.gridwidth = GridBagConstraints.REMAINDER;
user_[index] = new TextField (10);
user_[index].setEditable (false);
layout_.setConstraints(user_[index], c_);
dpanel_.add(user_[index]);
// force to display
validate ();
}
private void updateEntryAt (rsvcData data, int index)
{
String dispval = null;
int i = 0;
rsvcDataEntry dentry = data.get (tags_[i++]);
dentry = data.get (tags_[i++]);
dentry = data.get (tags_[i++]);
int statusval;
if (dentry != null) {
statusval = dentry.intValue ();
if (statusval == 0) {
status_[index].setBackground (Color.green);
status_[index].setText ("Alive");
}
else if (statusval == 2) {
status_[index].setBackground (Color.red);
status_[index].setText ("Dead");
}
else if (statusval == 1) {
status_[index].setBackground (Color.yellow);
status_[index].setText ("Dormant");
}
else {
status_[index].setBackground (Color.white);
status_[index].setText ("Unknown");
}
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
host_[index].setText (dispval);
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
port_[index].setText (dispval);
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
user_[index].setText (dispval);
}
}
public void updateEntry (rsvcData data, boolean create)
{
int i = 0;
String dispval = null;
String name = null;
String domain = null;
rsvcDataEntry dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
name = dispval;
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
domain = dispval;
}
i = 0;
String tname = null;
String tdomain = null;
int found = 0;
if (name != null && domain != null) {
for (i = 0; i < num_; i++) {
tname = name_[i].getText ();
tdomain = domain_[i].getText ();
if (name.compareTo (tname) == 0 &&
domain.compareTo (tdomain) == 0) {
updateEntryAt (data, i);
found = 1;
break;
}
}
}
if (found == 0 && create == true)
addEntry (data);
}
public void addEntry (rsvcData data)
{
String dispval = null;
int i = 0;
String name = null;
String domain = null;
createEmptyFields (num_);
rsvcDataEntry dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
name_[num_].setText (dispval);
name = dispval;
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
domain_[num_].setText (dispval);
domain = dispval;
}
dentry = data.get (tags_[i++]);
int statusval;
if (dentry != null) {
statusval = dentry.intValue ();
if (statusval == 0) {
status_[num_].setBackground (Color.green);
status_[num_].setText ("Alive");
}
else if (statusval == 2) {
status_[num_].setBackground (Color.red);
status_[num_].setText ("Dead");
}
else if (statusval == 1) {
status_[num_].setBackground (Color.yellow);
status_[num_].setText ("Dormant");
}
else {
status_[num_].setBackground (Color.white);
status_[num_].setText ("Unknown");
}
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
host_[num_].setText (dispval);
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
port_[num_].setText (dispval);
}
dentry = data.get (tags_[i++]);
if (dentry != null) {
dispval = dentry.stringValue ();
user_[num_].setText (dispval);
}
num_ ++;
if (name != null && domain != null) {
rsvcData serverinfo = new rsvcData ();
rsvcEvent oevent = null;
serverinfo.insert ("name", name);
serverinfo.insert ("domain", domain);
try {
oevent = client_.monitorValue ("cdevServers", serverinfo,
this);
}catch (IOException e) {
;
}
}
}
private void cleanupEntries ()
{
for (int i = 0; i < num_; i++) {
remove (name_[i]);
remove (domain_[i]);
remove (status_[i]);
remove (host_[i]);
remove (port_[i]);
remove (user_[i]);
}
num_ = 0;
validate ();
}
public void init ()
{
// create a border layout for applet
setLayout(new BorderLayout ());
// create top level scroll pane
sclp_ = new ScrollPane (ScrollPane.SCROLLBARS_ALWAYS);
add (sclp_);
sclp_.setSize (400, 100);
// create layout manager
layout_ = new GridBagLayout();
c_ = new GridBagConstraints();
c_.fill = GridBagConstraints.BOTH;
// create top level panel
dpanel_ = new Panel (layout_);
dpanel_.setSize (700, 100);
// add this panel to scroll pane
sclp_.add (dpanel_);
// create array of text fields
name_ = new TextField[size_];
domain_ = new TextField[size_];
status_ = new TextField[size_];
host_ = new TextField[size_];
port_ = new TextField[size_];
user_ = new TextField[size_];
num_ = 0;
// create top label
createLabel ("CDEV Name Server Information");
// create information label
createInfoLabel ();
// create category labels
createFieldLabels ();
// create network handler to rsvcServer
client_ = new rsvcClient();
if (serverHost_ == null) {
// get parameters for server host and server port
serverHost_ = getParameter ("host");
serverPort_ = Integer.valueOf (getParameter ("port")).intValue();
}
}
public void start ()
{
// start timer thread
startTimerThread ();
setInformation ("Connecting to server on " + serverHost_ + " at port " + String.valueOf (serverPort_));
try {
client_.connect (serverHost_, serverPort_);
}catch (UnknownHostException ue) {
setInformation ("Unknown Host " + serverHost_);
}catch (IOException e) {
setInformation ("Cannot connect to the server");
}
// if connected
if (client_.connected() == true) {
setInformation ("Connection to the server is established");
// get all
rsvcEvent oevent = null;
try {
oevent = client_.query ("cdevServers", "all", this);
}catch (IOException e) {
setInformation ("Cannot send out query information to the server");
}
// monitor on new entries
rsvcData noused = new rsvcData();
try {
oevent = client_. monitorIncomingEntries ("cdevServers",
noused, this);
} catch (IOException e) {
setInformation ("Cannot send out monitor request to the server");
}
// add disconnection handler
client_.addDisconnectHandler (this);
}
}
public void stop ()
{
if (client_.connected () == true) {
try {
client_.disconnect ();
}catch (IOException e) {
;
}
}
timerThread_.suspend ();
}
public void handleEvent (rsvcEvent event)
{
int status = event.getStatus ();
int opcode = event.getOpcode ();
rsvcData data = event.getData ();
if (status == rsvcConfig.RSVC_DISCONNECTED) {
setInformation ("Server is Gone");
cleanupEntries ();
}
else {
if (opcode == rsvcConfig.RSVC_QUERY) {
if (status == rsvcConfig.RSVC_INCOMPLETE ||
status == rsvcConfig.RSVC_SUCCESS)
addEntry (data);
}
else if (opcode == rsvcConfig.RSVC_MONITOR_ON) {
if (status == rsvcConfig.RSVC_SUCCESS)
updateEntry (data, false);
}
else if (opcode == rsvcConfig.RSVC_MONITOR_ENTRIES) {
if (status == rsvcConfig.RSVC_SUCCESS && data.isEmpty() != true)
updateEntry (data, true);
}
}
}
public void run ()
{
while (true) {
// check to see whether there is something in the
// information display area. If there is, clean out
String infotext = info_.getText ();
if (infotext != null)
info_.setText (null);
// sleep 3 seconds
try {
Thread.sleep (3000);
} catch (InterruptedException e) {
;
}
}
}
public static void main(String args[]) {
if (args.length < 2) {
System.err.println ("Usage: rsvcDisplay host port");
System.exit (-1);
}
Frame f = new Frame("CDEV Name Server Information");
rsvcDisplay display = new rsvcDisplay();
display.setServerHost (args[0]);
display.setServerPort (Integer.valueOf (args[1]).intValue());
display.init();
display.start ();
f.add("Center", display);
f.pack();
f.setSize(f.getPreferredSize());
f.show();
}
}