home *** CD-ROM | disk | FTP | other *** search
/ Datatid 1999 #6 / Datatid_1999-06.iso / internet / Tango352Promo / Tango / data.z / MessageHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-02-03  |  4.6 KB  |  185 lines

  1. package com.everyware.tango.jas;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InterruptedIOException;
  7. import java.io.OutputStream;
  8. import java.net.Socket;
  9.  
  10. public class MessageHandler implements Messageable, Runnable {
  11.    public static final int MAGIC_NUMBER = 258;
  12.    private JAS jas;
  13.    // $FF: renamed from: rm com.everyware.tango.jas.ResourceManager
  14.    private ResourceManager field_0;
  15.    private Thread thread;
  16.    private Socket socket;
  17.    // $FF: renamed from: is java.io.InputStream
  18.    private InputStream field_1;
  19.    private DataInputStream dis;
  20.    // $FF: renamed from: os java.io.OutputStream
  21.    private OutputStream field_2;
  22.  
  23.    public MessageHandler(JAS var1, ResourceManager var2) {
  24.       this.jas = var1;
  25.       this.field_0 = var2;
  26.    }
  27.  
  28.    public void setSocket(Socket var1) {
  29.       this.socket = var1;
  30.  
  31.       try {
  32.          this.field_2 = var1.getOutputStream();
  33.          this.field_1 = var1.getInputStream();
  34.          this.dis = new DataInputStream(this.field_1);
  35.       } catch (IOException var2) {
  36.          if (this.jas.isTracing) {
  37.             this.jas.traceM.trace("Could not use socket!");
  38.          }
  39.  
  40.       }
  41.    }
  42.  
  43.    public void run() {
  44.       this.thread = Thread.currentThread();
  45.  
  46.       while(true) {
  47.          for(; this.socket != null; this.endOfRequest()) {
  48.             if (this.jas.isTracing) {
  49.                this.jas.traceM.trace("MH: Processing request");
  50.             }
  51.  
  52.             try {
  53.                this.socket.setSoTimeout(this.jas.getClientSocketTimeout() * 1000);
  54.             } catch (Exception var5) {
  55.                if (this.jas.isTracing) {
  56.                   this.jas.traceM.trace("MH: Could not set socket SO timeout: " + var5);
  57.                }
  58.  
  59.                this.endOfRequest();
  60.             }
  61.  
  62.             try {
  63.                int var1 = this.getNumber();
  64.                int var2 = this.getSmallNumber();
  65.                if (var1 != 258) {
  66.                   (new MessageHeader(this.jas, this)).putHeader(101);
  67.                   this.putString("Invalid magic number:" + var1);
  68.                } else {
  69.                   for(int var3 = 0; var3 < var2; ++var3) {
  70.                      switch ((new MessageHeader(this.jas, this)).getHeader()) {
  71.                         case 1:
  72.                            (new KeepAlive(this.jas, this)).respond();
  73.                            break;
  74.                         case 2:
  75.                            (new JavaAction(this.jas, this)).respond();
  76.                            break;
  77.                         case 3:
  78.                            (new Config(this.jas, this)).respond();
  79.                      }
  80.                   }
  81.                }
  82.             } catch (Exception var4) {
  83.                if (this.jas.isTracing) {
  84.                   this.jas.traceM.trace("MH: Could not interpret message: " + var4);
  85.                }
  86.             }
  87.          }
  88.  
  89.          if (this.jas.isTracing) {
  90.             this.jas.traceM.trace("MH: No request to handle, suspending");
  91.          }
  92.  
  93.          this.thread.suspend();
  94.       }
  95.    }
  96.  
  97.    public void finalize() {
  98.       if (this.socket != null) {
  99.          if (this.jas.isTracing) {
  100.             this.jas.traceM.trace("MH: Closing client socket during finalization");
  101.          }
  102.  
  103.          try {
  104.             this.socket.close();
  105.          } catch (Exception var1) {
  106.          }
  107.       }
  108.    }
  109.  
  110.    private void endOfRequest() {
  111.       if (this.socket != null) {
  112.          try {
  113.             this.socket.close();
  114.             if (this.jas.isTracing) {
  115.                this.jas.traceM.trace("MH: Closed client socket");
  116.             }
  117.  
  118.             this.socket = null;
  119.          } catch (Exception var2) {
  120.             if (this.jas.isTracing) {
  121.                this.jas.traceM.trace("MH: Could not close client socket: " + var2);
  122.             }
  123.          }
  124.       }
  125.  
  126.       if (this.jas.isTracing) {
  127.          this.jas.traceM.trace("MH: cleaning up socket, all done with it");
  128.       }
  129.  
  130.       this.field_0.requestHandled(this.thread);
  131.    }
  132.  
  133.    public int getNumber() throws IOException, InterruptedIOException {
  134.       byte[] var1 = new byte[4];
  135.       this.dis.readFully(var1);
  136.       int var2 = (var1[0] + 256) % 256;
  137.       int var3 = (var1[1] + 256) % 256 * 256;
  138.       int var4 = (var1[2] + 256) % 256 * 65536;
  139.       int var5 = (var1[3] + 256) % 256 * 16777216;
  140.       return var2 + var3 + var4 + var5;
  141.    }
  142.  
  143.    public int getSmallNumber() throws IOException, InterruptedIOException {
  144.       byte[] var1 = new byte[1];
  145.       this.dis.readFully(var1);
  146.       return (var1[0] + 256) % 256;
  147.    }
  148.  
  149.    public String getString() throws IOException, InterruptedIOException {
  150.       int var1 = this.getNumber();
  151.       byte[] var2 = new byte[var1];
  152.       this.dis.readFully(var2);
  153.       String var3 = new String(var2);
  154.       return var3;
  155.    }
  156.  
  157.    public void putNumber(int var1) throws IOException {
  158.       if (this.jas.isTracing) {
  159.          this.jas.traceM.trace("MH: putNumber(" + var1 + ")");
  160.       }
  161.  
  162.       this.field_2.write(var1 % 256);
  163.       this.field_2.write(var1 / 256 % 256);
  164.       this.field_2.write(var1 / 65536 % 256);
  165.       this.field_2.write(var1 / 16777216 % 256);
  166.    }
  167.  
  168.    public void putSmallNumber(int var1) throws IOException {
  169.       if (this.jas.isTracing) {
  170.          this.jas.traceM.trace("MH: putSmallNumber(" + var1 + ")");
  171.       }
  172.  
  173.       this.field_2.write(var1);
  174.    }
  175.  
  176.    public void putString(String var1) throws IOException {
  177.       this.putNumber(var1.length());
  178.       if (this.jas.isTracing) {
  179.          this.jas.traceM.trace("MH: putString(" + var1 + ")");
  180.       }
  181.  
  182.       this.field_2.write(var1.getBytes());
  183.    }
  184. }
  185.