home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / rmi / transport / ConnectionInputStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  2.6 KB  |  97 lines

  1. package sun.rmi.transport;
  2.  
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.PrintStream;
  7. import java.rmi.RemoteException;
  8. import java.rmi.server.LogStream;
  9. import java.rmi.server.UID;
  10. import java.util.Enumeration;
  11. import java.util.Vector;
  12. import sun.rmi.server.MarshalInputStream;
  13.  
  14. class ConnectionInputStream extends MarshalInputStream {
  15.    private boolean ack = false;
  16.    private Vector objList;
  17.    private UID ackID = new UID();
  18.  
  19.    ConnectionInputStream(InputStream var1) throws IOException {
  20.       super(var1);
  21.    }
  22.  
  23.    void readID() throws IOException {
  24.       this.ackID = UID.read(this);
  25.    }
  26.  
  27.    void saveRef(LiveRef var1) {
  28.       if (this.objList == null) {
  29.          this.objList = new Vector();
  30.       }
  31.  
  32.       this.objList.addElement(var1);
  33.    }
  34.  
  35.    void registerRefs() throws IOException {
  36.       try {
  37.          if (this.objList != null) {
  38.             Enumeration var3 = this.objList.elements();
  39.  
  40.             while(var3.hasMoreElements()) {
  41.                LiveRef var9 = (LiveRef)var3.nextElement();
  42.                DGCClient.referenced(var9);
  43.             }
  44.          }
  45.       } catch (RemoteException var7) {
  46.          if (DGCImpl.logLevel >= 10) {
  47.             LogStream var4 = LogStream.log("dgc");
  48.             ((PrintStream)var4).println("ConnectionInputStream.registerRefs: exception: ");
  49.             ((Throwable)var7).printStackTrace(var4);
  50.          }
  51.  
  52.          throw var7;
  53.       } finally {
  54.          this.objList = null;
  55.       }
  56.  
  57.    }
  58.  
  59.    void setAckNeeded() {
  60.       this.ack = true;
  61.    }
  62.  
  63.    void done(Connection var1) {
  64.       if (this.ack) {
  65.          Connection var2 = null;
  66.          Channel var3 = null;
  67.          boolean var4 = true;
  68.          if (DGCImpl.logLevel >= 20) {
  69.             LogStream.log("dgc").println("ConnectionInputStream.done: send ack");
  70.          }
  71.  
  72.          try {
  73.             var3 = var1.getChannel();
  74.             var2 = var3.newConnection();
  75.             DataOutputStream var5 = new DataOutputStream(var2.getOutputStream());
  76.             var5.writeByte(84);
  77.             this.ackID.write(var5);
  78.             var2.releaseOutputStream();
  79.          } catch (RemoteException var7) {
  80.             var4 = false;
  81.          } catch (IOException var8) {
  82.             var4 = false;
  83.          }
  84.  
  85.          try {
  86.             if (var2 != null) {
  87.                var3.free(var2, var4);
  88.                return;
  89.             }
  90.          } catch (RemoteException var6) {
  91.             return;
  92.          }
  93.       }
  94.  
  95.    }
  96. }
  97.