sThread
[ class tree: sThread ] [ index: sThread ] [ all elements ]

Source for file Module.php

Documentation is available at Module.php

  1. <?php
  2. /**
  3.  * Single Thread Monitoring Module API<br>
  4.  * File: sThread/Module.php
  5.  *
  6.  * @category    Network
  7.  * @package     sThread
  8.  * @subpackage  sThread_CORE
  9.  * @author      JoungKyun.Kim <http://oops.org>
  10.  * @copyright   (c) 2015 OOPS.ORG
  11.  * @license     BSD License
  12.  * @version     $Id$
  13.  * @link        http://pear.oops.org/package/sThread
  14.  * @filesource
  15.  */
  16.  
  17. /**
  18.  * sThread package의 모듈을 관리하는 Class
  19.  *
  20.  * @category    Network
  21.  * @package     sThread
  22.  * @subpackage  sThread_CORE
  23.  * @author      JoungKyun.Kim <http://oops.org>
  24.  * @copyright   (c) 2015 OOPS.ORG
  25.  * @license     BSD License
  26.  * @link        http://pear.oops.org/package/sThread
  27.  */
  28. Class sThread_Module {
  29.     // {{{ properties
  30.     static public $obj;
  31.     static public $port;
  32.     static public $proto;
  33.     static private $moddir '/sThread/Modules';
  34.     // }}}
  35.  
  36.     // {{{ (void) __construct (void)
  37.     function __construct ({
  38.         self::init ();
  39.         $this->obj = &self::$obj;
  40.         $this->port = &self::$port;
  41.         $this->moddir &self::$moddir;
  42.     }
  43.     // }}}
  44.  
  45.     // {{{ (void) sThread_Module::init (void)
  46.     /**
  47.      * sThread의 모듈을 등록한다.
  48.      *
  49.      * get_ini('include_path') 의 경로 하위의 sThread/Moudles
  50.      * 디렉토리에 있는 모듈을 self::$obj 에 등록을 한다.
  51.      *
  52.      * STHREAD_MODULES라는 환경변수가 있을 경우 이 환경변수에
  53.      * 지정된 디렉토리에 있는 모듈들도 같이 등록을 한다.
  54.      *
  55.      * self::$port에는 module 이름을 키로 하여 모듈 포트를
  56.      * 저장한다.
  57.      *
  58.      * @access public
  59.      * @return void 
  60.      */
  61.     static function init ({
  62.         $mods_r explode (':'ini_get ('include_path'));
  63.         foreach $mods_r as $_mods {
  64.             if is_dir ($_mods self::$moddir) ) {
  65.                 self::$moddir $_mods self::$moddir;
  66.                 break;
  67.             }
  68.         }
  69.         $mods @glob (self::$moddir '/*.php'GLOB_MARK|GLOB_BRACE);
  70.  
  71.         if ( ($env getenv ('STHREAD_MODULES')) !== false {
  72.             if is_dir ($env) ) {
  73.                 $user_mod @glob ($env '/*.php'GLOB_MARK|GLOB_BRACE);
  74.                 if is_array ($user_mod) )
  75.                     $mods array_merge ($mods$user_mod);
  76.             }
  77.         }
  78.  
  79.         if count ($mods== {
  80.             ePrint::ePrintf ('Error: Availble module is not found');
  81.             exit (1);
  82.         }
  83.  
  84.         foreach $mods as $mod {
  85.             require_once "$mod";
  86.             $mod basename ($mod'.php');
  87.             $class 'sThread_' strtoupper ($mod);
  88.             if class_exists ($classfalse) ) {
  89.                 ePrint::ePrintf (
  90.                     'Warning: %s is not sThread module structure (%s class not found)',
  91.                     array ($mod '.php'$class)
  92.                 );
  93.                 continue;
  94.             }
  95.             if is_object (self::$obj) )
  96.                 self::$obj new stdClass;
  97.             self::$obj->$mod new $class;
  98.             self::$port[$modself::$obj->$mod->port;
  99.             self::$proto[$modself::$obj->$mod->protocol;
  100.         }
  101.     }
  102.     // }}}
  103.  
  104.     // {{{ (int) sThread_Moduel::port ($type)
  105.     /**
  106.      * 모듈 이름으로 사용할 포트를 반환
  107.      *
  108.      * @access public
  109.      * @return int 
  110.      * @param  string 모듈 이름
  111.      */
  112.     static function port ($type{
  113.         if $type )
  114.             return false;
  115.         return self::$port[$type];
  116.     }
  117.     // }}}
  118.  
  119.     // {{{ (string) sThread_Module::type ($port)
  120.     /**
  121.      * 포트 번호를 입력 받아, 해당 포트에 대한 모듈 이름을 반환
  122.      *
  123.      * @access public
  124.      * @return string 
  125.      * @param  int    포트 번호
  126.      */
  127.     static function type ($port{
  128.         if $port )
  129.             return false;
  130.  
  131.         foreach self::$port as $key => $val )
  132.             if $val == $port )
  133.                 return $key;
  134.         return false;
  135.     }
  136.     // }}}
  137.  
  138.     // {{{ (string) sThread_Module::proto ($v)
  139.     /**
  140.      * 포트 번호또는 모듈이름에 대한 protocol을 반환
  141.      *
  142.      * @access public
  143.      * @return string 
  144.      * @param  int    포트 번호 or 모듈 이름
  145.      */
  146.     static function proto ($v{
  147.         if $v )
  148.             return false;
  149.  
  150.         $type is_numeric ($vself::type($port$v;
  151.  
  152.         if isset (self::$proto[$type]) )
  153.             return self::$proto[$type];
  154.         return false;
  155.     }
  156.     // }}}
  157. }
  158.  
  159. /**
  160.  * sThread_Module 을 구동
  161.  */
  162. //sThread_Module::init ();
  163. //$mod = &sThread_Module::$obj;
  164. ?>

Documentation generated on Tue, 14 May 2019 02:00:33 +0900 by phpDocumentor 1.4.4