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,548 @@
//-----------------------------------------------------------------------------
// 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:
// RSVC Server/Client Protocol Information and Data Information
// This class contains protocol information related to callbacks
// 1. operation code
// 2. request id
// 3. socket id -->for server only
// 4. client id
// 5. callback id -->from client to server
//
//
// Author:
// Jie Chen
// Jefferson Lab HPC Group
//
// Revision History:
// $Log: rsvcEvent.java,v $
// Revision 1.1.1.1 2000/05/23 15:12:50 pal
// cdev_psi_1.7.2
//
// Revision 1.1 1999/10/18 17:12:42 chen
// *** empty log message ***
//
//
//
import java.io.*;
import rsvcConfig;
import rsvcData;
import rsvcEventHandler;
public final class rsvcEvent
{
private int opcode_;
private int cbkid_;
private int eventid_;
private int clientid_;
private int socketid_;
private int status_;
private rsvcData data_;
private rsvcEventHandler handler_ = null;
/**
* Construct an emtpy rsvcEvent object
*/
public rsvcEvent ()
{
opcode_ = rsvcConfig.RSVC_OP_UNKNOWN;
cbkid_ = 0;
eventid_ = 0;
clientid_ = 0;
socketid_ = 0;
status_ = rsvcConfig.RSVC_SUCCESS;
data_ = new rsvcData ();
handler_ = null;
}
/**
* Construct a rsvcEvent Object with given parameters
*/
public rsvcEvent (rsvcData data, int opcode, int cbkid)
{
data_ = new rsvcData (data);
opcode_ = opcode;
cbkid_ = cbkid;
eventid_ = 0;
clientid_ = 0;
socketid_ = 0;
status_ = rsvcConfig.RSVC_SUCCESS;
handler_ = null;
}
/**
* Construct a rsvcEvent Object with given parameters
*/
public rsvcEvent (rsvcData data, int opcode, int cbkid,
int eventid, int clientid, int socketid,
int status)
{
data_ = new rsvcData (data);
opcode_ = opcode;
cbkid_ = cbkid;
eventid_ = eventid;
clientid_ = clientid;
socketid_ = socketid;
status_ = status;
handler_ = null;
}
/**
* Construct a rsvcEvent Object without data object
*/
public rsvcEvent (int opcode, int cbkid,
int eventid, int clientid, int socketid,
int status)
{
data_ = new rsvcData();
opcode_ = opcode;
cbkid_ = cbkid;
eventid_ = eventid;
clientid_ = clientid;
socketid_ = socketid;
status_ = status;
handler_ = null;
}
/**
* Construct a rsvcEvent Object with data object only
*/
public rsvcEvent (rsvcData data)
{
data_ = new rsvcData(data);
opcode_ = 0;
cbkid_ = 0;
eventid_ = 0;
clientid_ = 0;
socketid_ = 0;
status_ = rsvcConfig.RSVC_SUCCESS;
handler_ = null;
}
/**
* Construct a rsvcEvent Object using an exising rsvcEvent
*/
public rsvcEvent (rsvcEvent event)
{
data_ = new rsvcData (event.data_);
opcode_ = event.opcode_;
cbkid_ = event.cbkid_;
eventid_ = event.eventid_;
clientid_ = event.clientid_;
socketid_ = event.socketid_;
status_ = event.status_;
handler_ = event.handler_;
}
/**
* Check whether two events have the same signature
*/
public boolean match (rsvcEvent event)
{
if (opcode_ == event.opcode_ &&
cbkid_ == event.cbkid_ &&
eventid_ == event.eventid_)
return true;
return false;
}
/**
* Set data and other paremeters
*/
public void set (rsvcData data,
int opcode, int cbkid,
int eventid, int clientid,
int socketid, int status)
{
data_ = new rsvcData (data);
opcode_ = opcode;
cbkid_ = cbkid;
eventid_ = eventid;
clientid_ = clientid;
socketid_ = socketid;
status_ = status;
}
/**
* Set data and other paremeters
*/
public void set (int opcode, int cbkid,
int eventid, int clientid,
int socketid, int status)
{
opcode_ = opcode;
cbkid_ = cbkid;
eventid_ = eventid;
clientid_ = clientid;
socketid_ = socketid;
status_ = status;
}
/**
* Clean up everything
*/
public void cleanup ()
{
data_.remove ();
cbkid_ = 0;
eventid_ = 0;
clientid_ = 0;
socketid_ = 0;
status_ = rsvcConfig.RSVC_SUCCESS;
handler_ = null;
}
/**
* Get Opcode of this event
*/
public int getOpcode ()
{
return opcode_;
}
/**
* Set opcode of this event
*/
public void setOpcode (int opcode)
{
opcode_ = opcode;
}
/**
* Get request id
*/
public int getEventid ()
{
return eventid_;
}
/**
* Set request id
*/
public void setEventid (int eventid)
{
eventid_ = eventid;
}
/**
* Get client id
*/
public int getClientid ()
{
return clientid_;
}
/**
* Set client id
*/
public void setClientid (int clientid)
{
clientid_ = clientid;
}
/**
* Get cbk id
*/
public int getCbkid ()
{
return cbkid_;
}
/**
* Set cbk id
*/
public void setCbkid (int cbkid)
{
cbkid_ = cbkid;
}
/**
* Get socket id
*/
public int getSocketid ()
{
return socketid_;
}
/**
* Set socket id
*/
public void setSocketid (int socketid)
{
socketid_ = socketid;
}
/**
* Get Status of event
*/
public int getStatus ()
{
return status_;
}
/**
* Set Status Field
*/
public void setStatus (int status)
{
status_ = status;
}
/**
* Get Data Field
*/
public rsvcData getData ()
{
return data_;
}
/**
* Set Data Field
*/
public void setData (rsvcData data)
{
data_ = new rsvcData (data);
}
/**
* Set Handler field
*/
public void setHandler (rsvcEventHandler handler)
{
handler_ = handler;
}
/**
* Get handler field
*/
public rsvcEventHandler getHandler () throws NullPointerException
{
if (handler_ == null) {
throw new NullPointerException ("rsvcEvent has a null handler");
}
return handler_;
}
/**
* Return binary data stream size for this event
*/
public int streamSize ()
{
int dsize = 0;
int size = 0;
// magic number first
dsize += rsvcDataOutputStream.streamSize (rsvcData._RSVC_MAGIC_NUM);
// size of the data to follow after this
dsize += rsvcDataOutputStream.streamSize (size);
// size of 6 integer fields
dsize += 6*rsvcDataOutputStream.streamSize ((int)0);
dsize += data_.streamSize ();
return dsize;
}
/**
* Convert object into a binary data stream
*/
public void streamOut (OutputStream output) throws IOException
{
// calculate total size of this binary stream
int binarysize = streamSize ();
// payload size without magic number and size information
int rsize = binarysize -
rsvcDataOutputStream.streamSize (rsvcData._RSVC_MAGIC_NUM) -
rsvcDataOutputStream.streamSize (binarysize);
rsvcDataOutputStream writer = new rsvcDataOutputStream (output);
// write out magic number first
try{
writer.write (rsvcData._RSVC_MAGIC_NUM);
}catch (IOException e) {
throw e;
}
try {
writer.write (rsize);
}catch (IOException e) {
throw e;
}
// write out six integer field
try {
writer.write (opcode_);
}catch (IOException e) {
throw e;
}
try {
writer.write (cbkid_);
}catch (IOException e) {
throw e;
}
try {
writer.write (eventid_);
}catch (IOException e) {
throw e;
}
try {
writer.write (clientid_);
}catch (IOException e) {
throw e;
}
try {
writer.write (socketid_);
}catch (IOException e) {
throw e;
}
try {
writer.write (status_);
}catch (IOException e) {
throw e;
}
// finally data item itself
try {
data_.streamOut (writer);
}catch (IOException e) {
throw e;
}
}
/**
* Read header information of an incoming stream to find out
* size information of data stream n
*/
public static int readHeader (InputStream stream) throws IOException
{
// attach input stream
rsvcDataInputStream input = new rsvcDataInputStream (stream);
// read magic number first
int magic;
try {
magic = input.readInt ();
}catch (IOException e){
throw e;
}
if (magic != rsvcData._RSVC_MAGIC_NUM) {
throw new IOException ("Magic number mismatch");
}
// get data size
int datasize;
try {
datasize = input.readInt ();
}catch (IOException e) {
throw e;
}
return datasize;
}
/**
* Return streamed event header length
*/
public static int headerLen ()
{
return rsvcDataOutputStream.streamSize (rsvcData._RSVC_MAGIC_NUM) +
rsvcDataOutputStream.streamSize ((int)1);
}
/**
* Convert a stream into an event object
*/
public void streamIn (InputStream stream) throws IOException
{
// clean up this object
cleanup ();
// attach input stream
rsvcDataInputStream input = new rsvcDataInputStream (stream);
try {
opcode_ = input.readInt ();
} catch (IOException e) {
throw e;
}
try {
cbkid_ = input.readInt ();
} catch (IOException e) {
throw e;
}
try {
eventid_ = input.readInt ();
} catch (IOException e) {
throw e;
}
try {
clientid_ = input.readInt ();
} catch (IOException e) {
throw e;
}
try {
socketid_ = input.readInt ();
} catch (IOException e) {
throw e;
}
try {
status_ = input.readInt ();
} catch (IOException e) {
throw e;
}
try {
data_.streamIn (input);
}catch (IOException e) {
throw e;
}
}
public String toString ()
{
StringBuffer result = new StringBuffer ();
result.append ("Event Contains \n");
result.append ("opcode: ").append (opcode_).append ("\n");
result.append ("cbkid: ").append (cbkid_).append ("\n");
result.append ("eventid: ").append (eventid_).append ("\n");
result.append ("clientid: ").append (clientid_).append ("\n");
result.append ("socketid: ").append (socketid_).append ("\n");
result.append ("status: ").append (status_).append ("\n");
result.append (data_.toString());
return result.toString();
}
}