1 29 30 package com.caucho.quercus.env; 31 32 import com.caucho.quercus.QuercusRuntimeException; 33 34 import java.util.logging.Level ; 35 import java.util.logging.Logger ; 36 37 40 public class SessionCallback extends Value { 41 private static final Logger log 42 = Logger.getLogger(SessionCallback.class.getName()); 43 44 private Callback _open; 45 private Callback _close; 46 private Callback _read; 47 private Callback _write; 48 private Callback _destroy; 49 private Callback _gc; 50 51 public SessionCallback(Callback open, 52 Callback close, 53 Callback read, 54 Callback write, 55 Callback destroy, 56 Callback gc) 57 { 58 _open = open; 59 _close = close; 60 _read = read; 61 _write = write; 62 _destroy = destroy; 63 _gc = gc; 64 } 65 66 public void open(Env env, String savePath, String sessionName) 67 { 68 _open.call(env, new StringValueImpl(savePath), new StringValueImpl(sessionName)); 69 } 70 71 public StringValue read(Env env, String id) 72 { 73 try { 74 Value value = _read.call(env, new StringValueImpl(id)); 75 76 if (value instanceof StringValue) 77 return (StringValue) value; 78 else 79 return null; 80 } catch (RuntimeException e) { 81 throw e; 82 } catch (Throwable e) { 83 throw new QuercusRuntimeException(e); 84 } 85 } 86 87 public void write(Env env, String id, String value) 88 { 89 try { 90 _write.call(env, new StringValueImpl(id), new StringValueImpl(value)); 91 } catch (RuntimeException e) { 92 throw e; 93 } catch (Throwable e) { 94 log.log(Level.FINE, e.toString(), e); 95 } 96 } 97 98 public void destroy(Env env, String id) 99 { 100 try { 101 _destroy.call(env, new StringValueImpl(id)); 102 } catch (RuntimeException e) { 103 throw e; 104 } catch (Throwable e) { 105 log.log(Level.FINE, e.toString(), e); 106 } 107 } 108 109 public void close(Env env) 110 { 111 try { 112 _close.call(env); 113 } catch (RuntimeException e) { 114 throw e; 115 } catch (Throwable e) { 116 log.log(Level.FINE, e.toString(), e); 117 } 118 } 119 } 120 | Popular Tags |