1 28 29 package com.caucho.ejb.burlap; 30 31 import com.caucho.burlap.io.BurlapInput; 32 import com.caucho.burlap.io.BurlapOutput; 33 import com.caucho.hessian.io.HessianRemoteResolver; 34 import com.caucho.util.CharBuffer; 35 import com.caucho.vfs.ReadStream; 36 37 import java.io.OutputStream ; 38 39 public class BurlapWriter extends BurlapOutput { 40 private ReadStream _is; 41 private HessianRemoteResolver _resolver; 42 43 49 public BurlapWriter(ReadStream is, OutputStream os) 50 { 51 super(os); 52 53 _is = is; 54 } 55 56 62 public BurlapWriter(OutputStream os) 63 { 64 super(os); 65 } 66 67 70 public BurlapWriter() 71 { 72 } 73 74 77 public void init(OutputStream os) 78 { 79 _serializerFactory = new BurlapSerializerFactory(); 80 81 super.init(os); 82 } 83 84 public void setRemoteResolver(HessianRemoteResolver resolver) 85 { 86 _resolver = resolver; 87 } 88 89 public BurlapInput doCall() 90 throws Throwable 91 { 92 completeCall(); 93 94 String status = (String ) _is.getAttribute("status"); 95 96 if (! "200".equals(status)) { 97 CharBuffer cb = new CharBuffer(); 98 99 int ch; 100 while ((ch = _is.readChar()) >= 0) 101 cb.append((char) ch); 102 103 throw new BurlapProtocolException("exception: " + cb); 104 } 105 106 BurlapInput in = new BurlapReader(); 107 in.setSerializerFactory(_serializerFactory); 108 in.setRemoteResolver(_resolver); 109 in.init(_is); 110 111 in.startReply(); 112 113 return in; 114 } 115 116 public void close() 117 { 118 try { 119 os.close(); 120 _is.close(); 121 } catch (Exception e) { 122 } 123 } 124 } 125 | Popular Tags |