/[cvs]/nfo/php/libs/org.netfrag.glib/DesignPattern/RemoteProxy.php
ViewVC logotype

Diff of /nfo/php/libs/org.netfrag.glib/DesignPattern/RemoteProxy.php

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

revision 1.10 by joko, Fri Mar 28 03:05:54 2003 UTC revision 1.17 by jonen, Mon Jul 14 10:05:23 2003 UTC
# Line 18  Line 18 
18   *    $Id$   *    $Id$
19   * -------------------------------------------------------------------------   * -------------------------------------------------------------------------
20   *    $Log$   *    $Log$
21     *    Revision 1.17  2003/07/14 10:05:23  jonen
22     *    bugfix: added *needed* function 'getAttributes'
23     *
24     *    Revision 1.16  2003/07/02 13:51:38  jonen
25     *    removed debug dumper
26     *
27     *    Revision 1.15  2003/04/11 01:32:21  joko
28     *    renamed logging function
29     *
30     *    Revision 1.14  2003/04/09 02:06:45  joko
31     *    errormessage now shown preformatted
32     *
33     *    Revision 1.13  2003/04/04 17:38:03  joko
34     *    modifications regarding error-/exception-handling and -tracing
35     *
36     *    Revision 1.12  2003/03/29 08:01:21  joko
37     *    modified ErrorBoxing
38     *
39     *    Revision 1.11  2003/03/28 06:44:51  joko
40     *    VERBOSE mode
41     *
42   *    Revision 1.10  2003/03/28 03:05:54  joko   *    Revision 1.10  2003/03/28 03:05:54  joko
43   *    more fancy debugging-output   *    more fancy debugging-output
44   *   *
# Line 257  class DesignPattern_RemoteProxy extends Line 278  class DesignPattern_RemoteProxy extends
278    var $backend;    var $backend;
279    
280    function DesignPattern_RemoteProxy($objectId = "", $options = array() ) {    function DesignPattern_RemoteProxy($objectId = "", $options = array() ) {
281      logp(get_class($this) . "->new()", PEAR_LOG_INFO);      php::log(get_class($this) . "->new()", PEAR_LOG_INFO);
282      global $proxy;      global $proxy;
283    
284      // 2003-03-05 - modified constructor      // 2003-03-05 - modified constructor
# Line 321  class DesignPattern_RemoteProxy extends Line 342  class DesignPattern_RemoteProxy extends
342    
343    
344    function load() {    function load() {
345      logp(get_class($this) . "->load()", PEAR_LOG_INFO);      php::log(get_class($this) . "->load()", PEAR_LOG_INFO);
346      if (!$this->_loadState()) {      if (!$this->_loadState()) {
347        if (!$this->_loadProxy()) {        if (!$this->_loadProxy()) {
348    
# Line 378  class DesignPattern_RemoteProxy extends Line 399  class DesignPattern_RemoteProxy extends
399      $this->attributes = $data;      $this->attributes = $data;
400    }    }
401    
402      function getAttributes() {
403        return $this->attributes;
404      }
405    
406    function flushProxy() {    function flushProxy() {
407          connectdb();          connectdb();
408      $sql = "DELETE FROM f_proxy WHERE oid='$this->objectId'";      $sql = "DELETE FROM f_proxy WHERE oid='$this->objectId'";
# Line 397  class DesignPattern_RemoteProxy extends Line 422  class DesignPattern_RemoteProxy extends
422        //print Dumper($this);        //print Dumper($this);
423    
424      // debug      // debug
425        logp(get_class($this) . "->_loadState()");        php::log(get_class($this) . "->_loadState()");
426                
427      if ($this->attributes = $proxy[$this->objectId]) {      if ($this->attributes = $proxy[$this->objectId]) {
428        //print "_loadState:" . dumpVar($this->attributes);        //print "_loadState:" . dumpVar($this->attributes);
# Line 409  class DesignPattern_RemoteProxy extends Line 434  class DesignPattern_RemoteProxy extends
434    
435    function _saveState() {    function _saveState() {
436      global $proxy;      global $proxy;
437      logp(get_class($this) . "->_saveState()");      php::log(get_class($this) . "->_saveState()");
438      $proxy[$this->objectId] = $this->attributes;      $proxy[$this->objectId] = $this->attributes;
439      //print "_saveState: " . dumpVar($this->attributes);      //print "_saveState: " . dumpVar($this->attributes);
440      // TODO: throw exception-message back to user if operation fails      // TODO: throw exception-message back to user if operation fails
# Line 422  class DesignPattern_RemoteProxy extends Line 447  class DesignPattern_RemoteProxy extends
447            
448      // trace & debug      // trace & debug
449        //print Dumper($this);        //print Dumper($this);
450        logp(get_class($this) . "->_loadProxy()");        php::log(get_class($this) . "->_loadProxy()");
451                
452      connectdb();      connectdb();
453      $sql = "SELECT payload FROM f_proxy WHERE oid='$this->objectId'";      $sql = "SELECT payload FROM f_proxy WHERE oid='$this->objectId'";
# Line 442  class DesignPattern_RemoteProxy extends Line 467  class DesignPattern_RemoteProxy extends
467      // FIXME!      // FIXME!
468      if (!$this->meta[cache][db]) { return; }      if (!$this->meta[cache][db]) { return; }
469    
470      logp(get_class($this) . "->_saveProxy()");      php::log(get_class($this) . "->_saveProxy()");
471          connectdb();          connectdb();
472          if ($this->payload) {          if ($this->payload) {
473        //$sql = "INSERT INTO f_proxy SET payload='$this->payload' WHERE oid='$this->objectId'";        //$sql = "INSERT INTO f_proxy SET payload='$this->payload' WHERE oid='$this->objectId'";
# Line 455  class DesignPattern_RemoteProxy extends Line 480  class DesignPattern_RemoteProxy extends
480    }    }
481        
482    function _loadRemote() {    function _loadRemote() {
483      logp(get_class($this) . "->_loadRemote()");      php::log(get_class($this) . "->_loadRemote()");
484            
485      // trace      // trace
486        //print Dumper($this->meta);        //print Dumper($this->meta);
# Line 464  class DesignPattern_RemoteProxy extends Line 489  class DesignPattern_RemoteProxy extends
489            
490      // 1. check backend-handle      // 1. check backend-handle
491      if (!$this->backend) {      if (!$this->backend) {
492        logp(get_class($this) . "->_loadRemote: no backend handle, please check argument 'rpcinfo'", PEAR_LOG_CRIT);        php::log(get_class($this) . "->_loadRemote: no backend handle, please check argument 'rpcinfo'", PEAR_LOG_CRIT);
493        return;        return;
494      }      }
495            
# Line 472  class DesignPattern_RemoteProxy extends Line 497  class DesignPattern_RemoteProxy extends
497        // check for guid or oid        // check for guid or oid
498        if ($this->meta[guid]) {        if ($this->meta[guid]) {
499          if (!$this->objectId) {          if (!$this->objectId) {
500            logp(get_class($this) . "->_loadRemote: argument 'guid' requires valid objectId", PEAR_LOG_WARNING);            php::log(get_class($this) . "->_loadRemote: argument 'guid' requires valid objectId", PEAR_LOG_WARNING);
501            return;            return;
502          }          }
503          if (!$this->meta[classname]) {          if (!$this->meta[classname]) {
504            logp(get_class($this) . "->_loadRemote: argument 'guid' requires 'classname'", PEAR_LOG_WARNING);            php::log(get_class($this) . "->_loadRemote: argument 'guid' requires 'classname'", PEAR_LOG_WARNING);
505            return;            return;
506          }          }
507          logp(get_class($this) . "->_loadRemote: getObjectByGuid", PEAR_LOG_DEBUG);          php::log(get_class($this) . "->_loadRemote: getObjectByGuid", PEAR_LOG_DEBUG);
508          $args = array( guid => $this->objectId, classname => $this->meta[classname] );          $args = array( guid => $this->objectId, classname => $this->meta[classname] );
509          $result = $this->backend->send('getObjectByGuid', $args );          $result = $this->backend->send('getObjectByGuid', $args );
510    
511        } elseif ($this->meta[oid]) {        } elseif ($this->meta[oid]) {
512          if (!$this->objectId) {          if (!$this->objectId) {
513            logp(get_class($this) . "->_loadRemote: argument 'oid' requires valid objectId", PEAR_LOG_WARNING);            php::log(get_class($this) . "->_loadRemote: argument 'oid' requires valid objectId", PEAR_LOG_WARNING);
514            return;            return;
515          }          }
516          logp(get_class($this) . "->_loadRemote: getObject", PEAR_LOG_DEBUG);          php::log(get_class($this) . "->_loadRemote: getObject", PEAR_LOG_DEBUG);
517          $result = $this->backend->send('getObject', $this->objectId);          $result = $this->backend->send('getObject', $this->objectId);
518    
519        } elseif ($this->meta[key]) {        } elseif ($this->meta[key]) {
520          if (!$this->meta[command]) {          if (!$this->meta[command]) {
521            logp(get_class($this) . "->_loadRemote: argument 'key' requires 'command'", PEAR_LOG_WARNING);            php::log(get_class($this) . "->_loadRemote: argument 'key' requires 'command'", PEAR_LOG_WARNING);
522            return;            return;
523          }          }
524          /*          /*
525          if (!$this->meta[query]) {          if (!$this->meta[query]) {
526            logp(get_class($this) . "->_loadRemote: argument 'key' requires 'query'", PEAR_LOG_WARNING);            php::log(get_class($this) . "->_loadRemote: argument 'key' requires 'query'", PEAR_LOG_WARNING);
527            return;            return;
528          }          }
529          */          */
530          //logp(get_class($this) . "->_loadRemote: $this->meta[command](" . join(' ', $this->meta[query]) . ")", PEAR_LOG_DEBUG);          //php::log(get_class($this) . "->_loadRemote: $this->meta[command](" . join(' ', $this->meta[query]) . ")", PEAR_LOG_DEBUG);
531          //print Dumper(array($this->meta[command], $this->meta[query]));          //print Dumper(array($this->meta[command], $this->meta[query]));
532          $result = $this->backend->send($this->meta[command], $this->meta[query]);          $result = $this->backend->send($this->meta[command], $this->meta[query]);
533                    
# Line 510  class DesignPattern_RemoteProxy extends Line 535  class DesignPattern_RemoteProxy extends
535    
536      //print "result: " . dumpVar($result) . "<br>";      //print "result: " . dumpVar($result) . "<br>";
537    
538      $status = $this->backend->getStatus();      $status = $this->backend->status();
539      //print Dumper($status);      //print Dumper($status);
540            
541      $style = html_style("text/css", '.caption { color: yellow }');      $good = is_array($result) && sizeof($result) && $status[connected];
       
     $statusbox = html_div();  
     $statusbox->set_style('background: #558856; border: 2px black groove; width:640px; padding:10px; margin:40px;');  
     $statusbox->add( html_b("Connected:"), $status[connected], html_br() );  
     $statusbox->add( html_span('caption', "Connected:"), $status[connected], html_br() );  
     foreach ($status[errors] as $error) {  
       $statusbox->add( html_span('caption', "Error[$error[code]]:"), $error[message], html_br() );  
     }  
       
     if (is_array($result)) {  
       $good = 1;  
     } else {  
       $message = get_class($this) . "->_loadRemote: Error while trying to talk to remote side. Please check wire, socket or api.";  
       $statusbox->add( $message, html_br() );  
       logp($message, PEAR_LOG_CRIT);  
     }  
542    
543      if ($good && sizeof($result)) {      if ($good) {
544                
545        // FIXME: this is dangerous!        // FIXME: this is dangerous!
546          /*
547        if ($_GET[debug]) {        if ($_GET[debug]) {
548          print Dumper($result);          print Dumper($result);
549        }        }
550          */
551                
552        $this->payload = serialize($result);        $this->payload = serialize($result);
553        // ----- move this to _encode some times        // ----- move this to _encode some times
# Line 546  class DesignPattern_RemoteProxy extends Line 557  class DesignPattern_RemoteProxy extends
557        $this->flushState();        $this->flushState();
558            
559      } else {      } else {
560        print $style->render();        
561        print $statusbox->render();        if (constants::get('APP_MODE_DEBUG')) {
562            $this->draw_error_box($status);
563          } else {
564            php::maintenance('rpc', array( status => $status ) );
565          }
566            
567      }      }
568            
569    }    }
570    
571    function draw_error_box($status) {
572      $style = html_style("text/css", '.boxlabel_yellow { color: yellow; font-weight:bold; }');
573      $statusbox = html_div();
574      $statusbox->set_style('background: red; border: 2px black groove; width:640px; padding:10px; margin:40px;');
575      $statusbox->add( html_span('boxlabel_yellow', "Method:"), get_class($this) . "->_loadRemote", html_br() );
576      $statusbox->add( html_span('boxlabel_yellow', "Connected:"), $status[connected], html_br() );
577      $statusbox->add( html_span('boxlabel_yellow', "RPCSESSID:"), $status[RPCSESSID], html_br() );
578      foreach ($status[errors] as $error) {
579        $msg = html_pre($error[message]);
580        $statusbox->add( html_span('boxlabel_yellow', "Error($error[code]):"), $msg );
581      }
582        
583      $message = "Error while talking to remote side. Please check wire, socket or api.";
584      php::log($message, PEAR_LOG_CRIT);
585      $statusbox->add( html_span('boxlabel_yellow', "Critical:"), $message, html_br() );
586    
587      // V1
588      /*
589      if (constants::get('VERBOSE') || constants::get('ERRORS_ONLY')) {
590        print $style->render();
591        print $statusbox->render();
592      } else {
593        foreach ($status[errors] as $error) {
594          print Dumper($error);
595        }
596      }
597      */
598    
599      // V2
600      trace( container($style, $statusbox) );
601    
602    }  
603    
604    
605    function _saveBackend($result) {    function _saveBackend($result) {
606      logp(get_class($this) . "->_saveBackend()");      php::log(get_class($this) . "->_saveBackend()");
607    
608      //$encoder = new TextEncode($result);      //$encoder = new TextEncode($result);
609      //$encoder->toUTF8();      //$encoder->toUTF8();
# Line 585  class DesignPattern_RemoteProxy extends Line 634  class DesignPattern_RemoteProxy extends
634    
635  }  }
636    
 ?>  
637    ?>

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.17

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