home *** CD-ROM | disk | FTP | other *** search
Java Source | 1998-07-01 | 8.7 KB | 219 lines |
-
- import amarquee.*;
- import java.io.*;
-
- /*************************************************
-
- AMarqueeDebug
-
- Author: HÃ¥kan Parting (hparting@hem.passagen.se)
- Ported from C-code by Jeremy Friesner (jaf@chem.ucsd.edu)
- 1998-06-16
-
- A Java implementation of amarqueedebug.c. Works pretty much
- the same as the C version does! Requires AMarquee 1.46+.
-
- Usage: java AmarqueeDebug [serverName] [portNumber] [logName]
- or if your using jre, exchange java for jre above.
-
- ***************************************************/
-
- public class AMarqueeDebug extends AMarqueeAdapter {
- private QSession qsess=null;
- boolean wantsInstantSampleData=false;
-
-
- public AMarqueeDebug(String[] args) {
- String connectTo=null, progName=null;
- int port=0;
- try {
- System.out.println("Usage Note: AMarqueeDebug [hostname=localhost]"+
- " [myname=debug] [port=2957]");
- connectTo = (args.length>0) ? new String(args[0]) : "localhost";
- progName = (args.length>1) ? new String(args[1]) : "debug";
- port = (args.length>2) ? Integer.parseInt(args[2]) : 2957;
-
- System.out.println("Connecting to "+connectTo+":"+port);
-
- // Open a connection
- qsess=new QSession(connectTo, port, progName);
- // Get us some events from the QSession
- qsess.addAMarqueeListener(this);
-
- if (wantsInstantSampleData) {
- qsess.SetOp("sampledata","Kids");
- qsess.SetOp("sampledata/Jeremy","1");
- qsess.SetOp("sampledata/Joanna","2");
- qsess.SetOp("sampledata/Joanna/nerd", "yep! :)");
- qsess.SetOp("sampledata/Joellen","3");
- qsess.SetOp("sampledata/Charcoal","Kitty!");
- qsess.Go(0);
- }
-
- System.out.println("Commands are:");
- System.out.println();
- System.out.println("a wildhostpath Access control (default is /#?/#?)");
- System.out.println("A wildhostpath Access control for incoming messages (default in no access)");
- System.out.println("m hosts=data Send an active message to hosts");
- System.out.println("M hosts=string Send an system message to hosts");
- System.out.println("s path=data Set data node value");
- System.out.println("S path=data Stream data node value");
- System.out.println("r path=newlabel Rename data node");
- System.out.println("D debugstring Send debug string");
- System.out.println("g wildpath Get a node or nodes");
- System.out.println("c wildpath Subscribe to a node or nodes");
- System.out.println("C wildpath Get&Subscribe to a node or nodes");
- System.out.println("k opID Klear subscriptions (by id or 0 for all)");
- System.out.println("d wildpath Delete a node or nodes");
- System.out.println("i Request info packet");
- System.out.println("p Request ping packet");
- System.out.println("v # Request new privileges (by code bitchord)");
- System.out.println("w # Release existing privileges (by code bitchord)");
- System.out.println("! hosts Kill other clients (requires KILLCLIENTS privilege!)");
- System.out.println("$ param=string Set a parameter with QSetParam()");
- System.out.println("? param Get a parameter by name");
- System.out.println("<enter> Send accumulated transactions (GO!!)");
- System.out.println();
- System.out.println("Enter commands below, or CTRL-C to quit");
-
- DataInputStream in=new DataInputStream(System.in);
- String debugline=null;
- String keyword=null;
- String data=null;
- int dataLen=0;
- long res=0;
- while(true) {
-
- System.out.print("Enter your debug command now: "); System.out.flush();
-
- debugline=in.readLine();
-
- int index=debugline.indexOf('=');
- try {
- if (index>=0) {
- keyword=debugline.substring(2,index);
- data=debugline.substring(index+1);
- dataLen=data.length();
- }
- else if (debugline.length()>0) {
- keyword=debugline.substring(2);
- }
- }
- catch (Exception e) {}
-
- if (debugline.length()>0) {
- switch (debugline.charAt(0)) {
- case 'A': res=qsess.SetMessageAccessOp(keyword, -1); break;
- case 'm': res=qsess.MessageOp(keyword, data); break;
- case 'M': res=qsess.SysMessageOp(keyword, data); break;
- case 'a': res=qsess.SetAccessOp(keyword); break;
- case 's': res=qsess.SetOp(keyword, data); break;
- case 'S': res=qsess.StreamOp(keyword, data); break;
- case 'r': res=qsess.RenameOp(keyword, data); break;
- case 'D': res=qsess.DebugOp(keyword); break;
- case 'g': res=qsess.GetOp(keyword, -1); break;
- case 'd': res=qsess.DeleteOp(keyword); break;
- case 'i': res=qsess.InfoOp(); break;
- case 'c': res=qsess.SubscribeOp(keyword, -1); break;
- case 'C': res=qsess.GetAndSubscribeOp(keyword, -1); break;
- case 'k': res=qsess.ClearSubscriptionsOp(Integer.parseInt(keyword)); break;
- case 'p': res=qsess.PingOp(); break;
- case 'v': res=qsess.RequestPrivilegesOp(Integer.parseInt(keyword)); break;
- case 'w': res=qsess.ReleasePrivilegesOp(Integer.parseInt(keyword)); break;
- case '!': res=qsess.KillClientsOp(keyword); break;
- case '?': res=qsess.GetParameterOp(keyword); break;
- case '$': res=qsess.SetParameterOp(keyword,data); break;
- default: System.out.println("Command code "+debugline.charAt(0)+" was not recognized."); break;
- }
- }
- else
- res=qsess.Go(0);
-
- System.out.println("(Op result was "+res+")");
-
-
-
- }
- }
- catch (SessionCreationException e) {
- System.out.println("Couldn't connect to server "+connectTo+":"+port);
- }
- catch (IOException e) {}
- }
- public void aMarqueeConnected(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" We are connected!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeConnectionLost(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" We lost the connection :(");
- printQMessage(event.getQMessage());
- // Close the QSession!
- qsess.close(); // No need to do this here!
- qsess=null;
- }
- public void aMarqueeDelVal(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" DeleteOp!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeError(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" Error!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeInfo(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" Info!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueePing(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" Ping, Pong!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeQMessage(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" QMessage!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeSendDone(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" Send Done!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeSetVal(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" SetOp!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeSubAdded(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" Data added!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeSubRemoved(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" Data removed!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeSysMsg(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" System Message!");
- printQMessage(event.getQMessage());
- }
- public void aMarqueeUnPrivileged(AMarqueeEvent event) {
- System.out.println("\nQSession "+event.getSource()+" UnPrivileged Error!");
- printQMessage(event.getQMessage());
- }
- public static void main(String[] args) {
- new AMarqueeDebug(args);
- }
- public void printQMessage(QMessage qMsg) {
- /* Handle message */
- System.out.println("Message "+qMsg+" recieved---------");
- System.out.println("Status: "+qMsg.getStatus()+" ("+qsess.QErrorName(qMsg.getStatus())+")");
- System.out.println("Error Line: "+qMsg.getErrorLine());
- System.out.println("Message ID: "+qMsg.getID());
- System.out.println("Path: ["+(qMsg.getPath()!=null ? qMsg.getPath() : "<NULL>")+"]");
- System.out.println("Data: ["+(qMsg.getData()!=null ? new String(qMsg.getData(),0,0,qMsg.getDataLen()-1) : "<NULL>")+"](int="+(qMsg.getData()!=null ? NumberUtil.intValue(qMsg.getData(),0) : 0));
- System.out.println("DataLen: "+qMsg.getDataLen());
- System.out.println("ActualLen: "+qMsg.getActualLen());
- QRunInfo info=qMsg.getQRunInfo();
-
- if (info!=null) {
- System.out.println("Info: alloced:"+info.getAlloced()+
- " allowed:"+info.getAllowed()+" avail:"+info.getAvail()+
- " curPrivs="+info.getCurrentPrivs()+" posPrivs="+info.getPossiblePrivs());
- }
- }
- }