home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 12 / MA_Cover_12.iso / java / amarquee1_48 / amarqueedebug.java < prev   
Encoding:
Java Source  |  1998-07-01  |  8.7 KB  |  219 lines

  1.  
  2. import amarquee.*;
  3. import java.io.*;
  4.  
  5. /*************************************************
  6.  
  7.    AMarqueeDebug
  8.  
  9.    Author: HÃ¥kan Parting (hparting@hem.passagen.se)
  10.            Ported from C-code by Jeremy Friesner (jaf@chem.ucsd.edu)
  11.            1998-06-16
  12.    
  13.    A Java implementation of amarqueedebug.c.  Works pretty much
  14.    the same as the C version does!  Requires AMarquee 1.46+.
  15.  
  16.    Usage:  java AmarqueeDebug [serverName] [portNumber] [logName]
  17.            or if your using jre, exchange java for jre above.
  18.    
  19. ***************************************************/
  20.  
  21. public class AMarqueeDebug extends AMarqueeAdapter {
  22.     private QSession qsess=null;
  23.     boolean wantsInstantSampleData=false;
  24.     
  25.  
  26.     public AMarqueeDebug(String[] args) {
  27.         String connectTo=null, progName=null;
  28.         int port=0;
  29.         try {
  30.             System.out.println("Usage Note:  AMarqueeDebug [hostname=localhost]"+
  31.                                 " [myname=debug] [port=2957]");  
  32.             connectTo = (args.length>0) ? new String(args[0]) : "localhost";
  33.               progName  = (args.length>1) ? new String(args[1]) : "debug";
  34.               port      = (args.length>2) ? Integer.parseInt(args[2]) : 2957;
  35.  
  36.             System.out.println("Connecting to "+connectTo+":"+port);
  37.         
  38.             // Open a connection
  39.             qsess=new QSession(connectTo, port, progName);
  40.             // Get us some events from the QSession
  41.             qsess.addAMarqueeListener(this);
  42.  
  43.             if (wantsInstantSampleData) {
  44.                 qsess.SetOp("sampledata","Kids");
  45.                 qsess.SetOp("sampledata/Jeremy","1");
  46.                 qsess.SetOp("sampledata/Joanna","2");
  47.                   qsess.SetOp("sampledata/Joanna/nerd", "yep! :)");
  48.                 qsess.SetOp("sampledata/Joellen","3");
  49.                 qsess.SetOp("sampledata/Charcoal","Kitty!");
  50.                   qsess.Go(0);
  51.             }
  52.  
  53.   System.out.println("Commands are:");
  54.   System.out.println();
  55.   System.out.println("a wildhostpath   Access control (default is /#?/#?)");
  56.   System.out.println("A wildhostpath   Access control for incoming messages (default in no access)");
  57.   System.out.println("m hosts=data     Send an active message to hosts");
  58.   System.out.println("M hosts=string   Send an system message to hosts");
  59.   System.out.println("s path=data      Set data node value");
  60.   System.out.println("S path=data      Stream data node value");
  61.   System.out.println("r path=newlabel  Rename data node");
  62.   System.out.println("D debugstring    Send debug string");
  63.   System.out.println("g wildpath       Get a node or nodes");
  64.   System.out.println("c wildpath       Subscribe to a node or nodes");
  65.   System.out.println("C wildpath       Get&Subscribe to a node or nodes");
  66.   System.out.println("k opID           Klear subscriptions (by id or 0 for all)");
  67.   System.out.println("d wildpath       Delete a node or nodes");
  68.   System.out.println("i                Request info packet");
  69.   System.out.println("p                Request ping packet");
  70.   System.out.println("v #              Request new privileges (by code bitchord)");
  71.   System.out.println("w #              Release existing privileges (by code bitchord)");
  72.   System.out.println("! hosts          Kill other clients (requires KILLCLIENTS privilege!)");
  73.   System.out.println("$ param=string   Set a parameter with QSetParam()");
  74.   System.out.println("? param          Get a parameter by name");
  75.   System.out.println("<enter>          Send accumulated transactions (GO!!)");
  76.   System.out.println();
  77.   System.out.println("Enter commands below, or CTRL-C to quit");
  78.  
  79.             DataInputStream in=new DataInputStream(System.in);                
  80.             String debugline=null;
  81.             String keyword=null;
  82.             String data=null;
  83.             int dataLen=0;
  84.             long res=0;
  85.             while(true) {
  86.                 
  87.                 System.out.print("Enter your debug command now: "); System.out.flush();
  88.  
  89.                 debugline=in.readLine();
  90.  
  91.                 int index=debugline.indexOf('=');
  92.                 try {
  93.                     if (index>=0) {
  94.                         keyword=debugline.substring(2,index);
  95.                         data=debugline.substring(index+1);
  96.                         dataLen=data.length();
  97.                     }
  98.                     else if (debugline.length()>0) {
  99.                         keyword=debugline.substring(2);
  100.                     }
  101.                 }
  102.                 catch (Exception e) {}
  103.  
  104.                 if (debugline.length()>0) {
  105.                 switch (debugline.charAt(0)) {
  106.      case 'A':  res=qsess.SetMessageAccessOp(keyword, -1); break;
  107.      case 'm':  res=qsess.MessageOp(keyword, data); break;
  108.      case 'M':  res=qsess.SysMessageOp(keyword, data);   break;
  109.      case 'a':  res=qsess.SetAccessOp(keyword);          break;
  110.      case 's':  res=qsess.SetOp(keyword, data); break;
  111.      case 'S':  res=qsess.StreamOp(keyword, data); break;
  112.      case 'r':  res=qsess.RenameOp(keyword, data);       break;
  113.      case 'D':  res=qsess.DebugOp(keyword);              break;
  114.      case 'g':  res=qsess.GetOp(keyword, -1);            break;
  115.      case 'd':  res=qsess.DeleteOp(keyword);             break;
  116.      case 'i':  res=qsess.InfoOp();                        break;
  117.      case 'c':  res=qsess.SubscribeOp(keyword, -1);      break;
  118.      case 'C':  res=qsess.GetAndSubscribeOp(keyword, -1);     break;
  119.      case 'k':  res=qsess.ClearSubscriptionsOp(Integer.parseInt(keyword)); break;
  120.      case 'p':  res=qsess.PingOp();                             break;
  121.      case 'v':  res=qsess.RequestPrivilegesOp(Integer.parseInt(keyword));  break;
  122.      case 'w':  res=qsess.ReleasePrivilegesOp(Integer.parseInt(keyword));  break;
  123.      case '!':  res=qsess.KillClientsOp(keyword);              break;
  124.      case '?':  res=qsess.GetParameterOp(keyword);             break;
  125.      case '$':  res=qsess.SetParameterOp(keyword,data);        break;
  126.      default:   System.out.println("Command code "+debugline.charAt(0)+" was not recognized."); break;
  127.                 }
  128.                 }
  129.                 else
  130.                     res=qsess.Go(0);
  131.  
  132.                    System.out.println("(Op result was "+res+")");
  133.  
  134.  
  135.  
  136.             }
  137.         }
  138.         catch (SessionCreationException e) {
  139.             System.out.println("Couldn't connect to server "+connectTo+":"+port);
  140.         }
  141.         catch (IOException e) {}
  142.     }
  143.     public void aMarqueeConnected(AMarqueeEvent event) {
  144.         System.out.println("\nQSession "+event.getSource()+" We are connected!");
  145.         printQMessage(event.getQMessage());
  146.     }
  147.     public void aMarqueeConnectionLost(AMarqueeEvent event) {
  148.         System.out.println("\nQSession "+event.getSource()+" We lost the connection :(");
  149.         printQMessage(event.getQMessage());
  150.         // Close the QSession!
  151.         qsess.close(); // No need to do this here!
  152.         qsess=null;
  153.     }
  154.     public void aMarqueeDelVal(AMarqueeEvent event) {
  155.         System.out.println("\nQSession "+event.getSource()+" DeleteOp!");
  156.         printQMessage(event.getQMessage());
  157.     }
  158.     public void aMarqueeError(AMarqueeEvent event) {
  159.         System.out.println("\nQSession "+event.getSource()+" Error!");
  160.         printQMessage(event.getQMessage());
  161.     }
  162.     public void aMarqueeInfo(AMarqueeEvent event) {
  163.         System.out.println("\nQSession "+event.getSource()+" Info!");
  164.         printQMessage(event.getQMessage());
  165.     }
  166.     public void aMarqueePing(AMarqueeEvent event) {
  167.         System.out.println("\nQSession "+event.getSource()+" Ping, Pong!");
  168.         printQMessage(event.getQMessage());
  169.     }
  170.     public void aMarqueeQMessage(AMarqueeEvent event) {
  171.         System.out.println("\nQSession "+event.getSource()+" QMessage!");
  172.         printQMessage(event.getQMessage());
  173.     }
  174.     public void aMarqueeSendDone(AMarqueeEvent event) {
  175.         System.out.println("\nQSession "+event.getSource()+" Send Done!");
  176.         printQMessage(event.getQMessage());
  177.     }
  178.     public void aMarqueeSetVal(AMarqueeEvent event) {
  179.         System.out.println("\nQSession "+event.getSource()+" SetOp!");
  180.         printQMessage(event.getQMessage());
  181.     }
  182.     public void aMarqueeSubAdded(AMarqueeEvent event) {
  183.         System.out.println("\nQSession "+event.getSource()+" Data added!");
  184.         printQMessage(event.getQMessage());
  185.     }
  186.     public void aMarqueeSubRemoved(AMarqueeEvent event) {
  187.         System.out.println("\nQSession "+event.getSource()+" Data removed!");
  188.         printQMessage(event.getQMessage());
  189.     }
  190.     public void aMarqueeSysMsg(AMarqueeEvent event) {
  191.         System.out.println("\nQSession "+event.getSource()+" System Message!");
  192.         printQMessage(event.getQMessage());
  193.     }
  194.     public void aMarqueeUnPrivileged(AMarqueeEvent event) {
  195.         System.out.println("\nQSession "+event.getSource()+" UnPrivileged Error!");
  196.         printQMessage(event.getQMessage());
  197.     }
  198.     public static void main(String[] args) {
  199.         new AMarqueeDebug(args);
  200.     }
  201.     public void printQMessage(QMessage qMsg) {
  202.         /* Handle message */
  203.         System.out.println("Message "+qMsg+" recieved---------");
  204.         System.out.println("Status:       "+qMsg.getStatus()+" ("+qsess.QErrorName(qMsg.getStatus())+")");
  205.         System.out.println("Error Line:   "+qMsg.getErrorLine());
  206.         System.out.println("Message ID:   "+qMsg.getID());
  207.         System.out.println("Path:        ["+(qMsg.getPath()!=null ? qMsg.getPath() : "<NULL>")+"]");
  208.         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));
  209.         System.out.println("DataLen:      "+qMsg.getDataLen());
  210.         System.out.println("ActualLen:    "+qMsg.getActualLen());
  211.         QRunInfo info=qMsg.getQRunInfo();
  212.  
  213.         if (info!=null) {
  214.             System.out.println("Info: alloced:"+info.getAlloced()+
  215.             " allowed:"+info.getAllowed()+" avail:"+info.getAvail()+
  216.             " curPrivs="+info.getCurrentPrivs()+" posPrivs="+info.getPossiblePrivs());
  217.         }    
  218.     }
  219. }