/[cvs]/nfo/php/libs/org.netfrag.glib/Data/Driver/Proxy.php
ViewVC logotype

Diff of /nfo/php/libs/org.netfrag.glib/Data/Driver/Proxy.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by joko, Sun Feb 9 17:23:21 2003 UTC revision 1.2 by joko, Thu Feb 13 21:48:09 2003 UTC
# Line 4  Line 4 
4  ##    $Id$  ##    $Id$
5  ##    -------------------------------------------------------------------------------------  ##    -------------------------------------------------------------------------------------
6  ##    $Log$  ##    $Log$
7    ##    Revision 1.2  2003/02/13 21:48:09  joko
8    ##    + caching mechanisms more configurable now
9    ##
10  ##    Revision 1.1  2003/02/09 17:23:21  joko  ##    Revision 1.1  2003/02/09 17:23:21  joko
11  ##    + refactored from flib/Application/RPC/ProxyObject.php  ##    + refactored from flib/Application/RPC/ProxyObject.php
12  ##  ##
# Line 81  Line 84 
84  ##    -------------------------------------------------------------------------------------  ##    -------------------------------------------------------------------------------------
85  */  */
86    
87    // TODO:
88    //  - make database connection more configurable to make possible
89    //    to have different proxy database (besides the main database)
90    //    use PEAR for this! no more 'connectdb' here!!!
91    //  - extend options to en-/disable caching via a) session and/or b) database
92    
93  class Data_Driver_Proxy {  class Data_Driver_Proxy {
94    
# Line 94  class Data_Driver_Proxy { Line 102  class Data_Driver_Proxy {
102    function Data_Driver_Proxy($objectId = "", $options = array() ) {    function Data_Driver_Proxy($objectId = "", $options = array() ) {
103      logp(get_class($this) . "->new()", PEAR_LOG_INFO);      logp(get_class($this) . "->new()", PEAR_LOG_INFO);
104      global $proxy;      global $proxy;
105      //print Dumper($objectId, $options);  
106      session_register_safe("proxy");      // trace
107      if ($options[rpcinfo]) {        //print Dumper($objectId, $options);
108        $this->backend = mkObject('Data::Driver::RPC::Remote', $options[rpcinfo]);  
109      }      // initialization/startup
110      $this->_init($objectId, $options);        $this->_init_meta_options($objectId, $options);
111          $this->_init_caching();
112          $this->_init_load();
113    
114    }    }
115    
116    function _init($objectId="", $options = array() ) {    function _init_meta_options( $objectId="", $options = array() ) {
117        $this->meta = $options;
118    
119      if ($objectId) {      if ($objectId) {
120        $this->objectId = $objectId;        $this->objectId = $objectId;
       $this->meta = $options;  
121                
122        // set default load mechanism        // set default load mechanism
123        if( $this->meta[remote] && ((!$this->meta[oid] && !$this->meta[guid]) || ($this->meta[oid] && $this->meta[guid])) && (!$this->meta[key]) ) {        if ( $this->meta[remote] && ((!$this->meta[oid] && !$this->meta[guid]) || ($this->meta[oid] && $this->meta[guid])) && (!$this->meta[key]) ) {
124          $this->meta[oid] = 1;          $this->meta[oid] = 1;
125        }        }
126                
127        }
128      }
129    
130      function _init_caching() {
131        
132        if ($this->meta[cache][session]) {
133          session_register_safe("proxy");
134        }  
135    
136        if ($this->meta[remote]) {
137          $this->backend = mkObject('Data::Driver::RPC::Remote', $this->meta[rpcinfo]);
138        }
139      }
140    
141      function _init_load() {
142        if ($this->objectId) {
143        $this->load();        $this->load();
144        //$this->_saveProxy();        //$this->_saveProxy();
145      }      }
146    }    }
147    
148    
149    function load() {    function load() {
150      logp(get_class($this) . "->load()", PEAR_LOG_INFO);      logp(get_class($this) . "->load()", PEAR_LOG_INFO);
151      if (!$this->_loadState()) {      if (!$this->_loadState()) {
# Line 189  class Data_Driver_Proxy { Line 218  class Data_Driver_Proxy {
218    
219    function _loadState() {    function _loadState() {
220      global $proxy;      global $proxy;
221  //print Dumper($this);  
222      logp(get_class($this) . "->_loadState()");      // trace
223          //print Dumper($this);
224    
225        // debug
226          logp(get_class($this) . "->_loadState()");
227          
228      if ($this->attributes = $proxy[$this->objectId]) {      if ($this->attributes = $proxy[$this->objectId]) {
229        //print "_loadState:" . dumpVar($this->attributes);        //print "_loadState:" . dumpVar($this->attributes);
230        $this->meta[decoded] = 1;        $this->meta[decoded] = 1;
# Line 208  class Data_Driver_Proxy { Line 242  class Data_Driver_Proxy {
242    }    }
243    
244    function _loadProxy() {    function _loadProxy() {
245      logp(get_class($this) . "->_loadProxy()");      
246        // FIXME!
247        if (!$this->meta[cache][db]) { return; }
248        
249        // trace & debug
250          //print Dumper($this);
251          logp(get_class($this) . "->_loadProxy()");
252          
253      connectdb();      connectdb();
254      $sql = "SELECT payload FROM f_proxy WHERE oid='$this->objectId'";      $sql = "SELECT payload FROM f_proxy WHERE oid='$this->objectId'";
255      if ($res = send_sql($sql)) {      if ($res = send_sql($sql)) {
# Line 223  class Data_Driver_Proxy { Line 264  class Data_Driver_Proxy {
264        
265    // TODO: use PEAR here    // TODO: use PEAR here
266    function _saveProxy() {    function _saveProxy() {
267    
268        // FIXME!
269        if (!$this->meta[cache][db]) { return; }
270    
271      logp(get_class($this) . "->_saveProxy()");      logp(get_class($this) . "->_saveProxy()");
272          connectdb();          connectdb();
273          if ($this->payload) {          if ($this->payload) {
# Line 238  class Data_Driver_Proxy { Line 283  class Data_Driver_Proxy {
283    function _loadRemote() {    function _loadRemote() {
284      logp(get_class($this) . "->_loadRemote()");      logp(get_class($this) . "->_loadRemote()");
285            
286      //print Dumper($this->meta);      // trace
287          //print Dumper($this->meta);
288                    
289      // TODO: test backend for reachability first (eventually cache this information and "reset" it by another party)      // TODO: test backend for reachability first (eventually cache this information and "reset" it by another party)
290            
# Line 274  class Data_Driver_Proxy { Line 320  class Data_Driver_Proxy {
320            logp(get_class($this) . "->_loadRemote: argument 'key' requires 'command'", PEAR_LOG_WARNING);            logp(get_class($this) . "->_loadRemote: argument 'key' requires 'command'", PEAR_LOG_WARNING);
321            return;            return;
322          }          }
323            /*
324          if (!$this->meta[query]) {          if (!$this->meta[query]) {
325            logp(get_class($this) . "->_loadRemote: argument 'key' requires 'query'", PEAR_LOG_WARNING);            logp(get_class($this) . "->_loadRemote: argument 'key' requires 'query'", PEAR_LOG_WARNING);
326            return;            return;
327          }          }
328            */
329          $result = $this->backend->send($this->meta[command], $this->meta[query]);          $result = $this->backend->send($this->meta[command], $this->meta[query]);
330                    
331        }        }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed