home *** CD-ROM | disk | FTP | other *** search
- package com.everyware.tango.jas;
-
- import java.io.DataInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InterruptedIOException;
- import java.io.OutputStream;
- import java.net.Socket;
-
- public class MessageHandler implements Messageable, Runnable {
- public static final int MAGIC_NUMBER = 258;
- private JAS jas;
- // $FF: renamed from: rm com.everyware.tango.jas.ResourceManager
- private ResourceManager field_0;
- private Thread thread;
- private Socket socket;
- // $FF: renamed from: is java.io.InputStream
- private InputStream field_1;
- private DataInputStream dis;
- // $FF: renamed from: os java.io.OutputStream
- private OutputStream field_2;
-
- public MessageHandler(JAS var1, ResourceManager var2) {
- this.jas = var1;
- this.field_0 = var2;
- }
-
- public void setSocket(Socket var1) {
- this.socket = var1;
-
- try {
- this.field_2 = var1.getOutputStream();
- this.field_1 = var1.getInputStream();
- this.dis = new DataInputStream(this.field_1);
- } catch (IOException var2) {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("Could not use socket!");
- }
-
- }
- }
-
- public void run() {
- this.thread = Thread.currentThread();
-
- while(true) {
- for(; this.socket != null; this.endOfRequest()) {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: Processing request");
- }
-
- try {
- this.socket.setSoTimeout(this.jas.getClientSocketTimeout() * 1000);
- } catch (Exception var5) {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: Could not set socket SO timeout: " + var5);
- }
-
- this.endOfRequest();
- }
-
- try {
- int var1 = this.getNumber();
- int var2 = this.getSmallNumber();
- if (var1 != 258) {
- (new MessageHeader(this.jas, this)).putHeader(101);
- this.putString("Invalid magic number:" + var1);
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- switch ((new MessageHeader(this.jas, this)).getHeader()) {
- case 1:
- (new KeepAlive(this.jas, this)).respond();
- break;
- case 2:
- (new JavaAction(this.jas, this)).respond();
- break;
- case 3:
- (new Config(this.jas, this)).respond();
- }
- }
- }
- } catch (Exception var4) {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: Could not interpret message: " + var4);
- }
- }
- }
-
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: No request to handle, suspending");
- }
-
- this.thread.suspend();
- }
- }
-
- public void finalize() {
- if (this.socket != null) {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: Closing client socket during finalization");
- }
-
- try {
- this.socket.close();
- } catch (Exception var1) {
- }
- }
- }
-
- private void endOfRequest() {
- if (this.socket != null) {
- try {
- this.socket.close();
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: Closed client socket");
- }
-
- this.socket = null;
- } catch (Exception var2) {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: Could not close client socket: " + var2);
- }
- }
- }
-
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: cleaning up socket, all done with it");
- }
-
- this.field_0.requestHandled(this.thread);
- }
-
- public int getNumber() throws IOException, InterruptedIOException {
- byte[] var1 = new byte[4];
- this.dis.readFully(var1);
- int var2 = (var1[0] + 256) % 256;
- int var3 = (var1[1] + 256) % 256 * 256;
- int var4 = (var1[2] + 256) % 256 * 65536;
- int var5 = (var1[3] + 256) % 256 * 16777216;
- return var2 + var3 + var4 + var5;
- }
-
- public int getSmallNumber() throws IOException, InterruptedIOException {
- byte[] var1 = new byte[1];
- this.dis.readFully(var1);
- return (var1[0] + 256) % 256;
- }
-
- public String getString() throws IOException, InterruptedIOException {
- int var1 = this.getNumber();
- byte[] var2 = new byte[var1];
- this.dis.readFully(var2);
- String var3 = new String(var2);
- return var3;
- }
-
- public void putNumber(int var1) throws IOException {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: putNumber(" + var1 + ")");
- }
-
- this.field_2.write(var1 % 256);
- this.field_2.write(var1 / 256 % 256);
- this.field_2.write(var1 / 65536 % 256);
- this.field_2.write(var1 / 16777216 % 256);
- }
-
- public void putSmallNumber(int var1) throws IOException {
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: putSmallNumber(" + var1 + ")");
- }
-
- this.field_2.write(var1);
- }
-
- public void putString(String var1) throws IOException {
- this.putNumber(var1.length());
- if (this.jas.isTracing) {
- this.jas.traceM.trace("MH: putString(" + var1 + ")");
- }
-
- this.field_2.write(var1.getBytes());
- }
- }
-