Source for file Addr.php
Documentation is available at Addr.php
* Parsing API of Host Address format<br>
* @subpackage sThread_CORE
* @author JoungKyun.Kim <http://oops.org>
* @copyright (c) 2015 OOPS.ORG
* @link http://pear.oops.org/package/sThread
require_once 'ePrint.php';
* @subpackage sThread_CORE
* @author JoungKyun.Kim <http://oops.org>
* @copyright (c) 2015 OOPS.ORG
* @link http://pear.oops.org/package/sThread
// {{{ (string) sThread_Address::parse ($buf)
* sThread로 전달된 주소및 옵션의 유효성 검증 및 파싱
static function parse ($buf) {
if ( preg_match ('/^(.+)\|(.+)$/', $buf, $matches) ) {
if ( $size < 2 || $size > 3 ) {
if ( ePrint::$debugLevel >= Vari::DEBUG1 )
ePrint::ePrintf ('Error: Argument format is must \'host:port[:module]\' : ' . $buf);
// 포트가 마지막으로 올 경우, 포트와 모듈의 자리 변경
// 포트는 정확하고, 모듈 이름이 잘못되었을 경우
//if ( ! sThread_Module::port ($new_array[2]) )
// $new_array[2] = sThread_Module::type ($new_array[1]);
// 포트가 주어졌을 경우 , 포트를 이용하여 어떤
// 포트가 주어지지 않았을 경우, 해당 모듈의 포트를
// 모듈이 지원되지 않는 형식이거나, 포트를 알 수 없을 경우, 에러
if ( ! $new_array[1] || ! $new_array[2] ) {
if ( ePrint::$debugLevel >= Vari::DEBUG1 ) {
if ( ! $new_array[1] && $new_array[2] )
ePrint::ePrintf ('Error: %s Unsupport module %s', array ($new_array[0], $new_array[2]));
else if ( $new_array[1] && ! $new_array[2] )
ePrint::ePrintf ('Error: %s Unsupport port %d', array ($new_array[0], $new_array[1]));
ePrint::ePrintf ('Error: Argument format is must \'host:port[:module]\'');
if ( ePrint::$debugLevel >= Vari::DEBUG1 )
ePrint::ePrintf ('Error: Can\'t find %s module', $new_array[2]);
$r = join (':', $new_array);
// {{{ (object) sThread_Address::extraOption (&$type)
* sThread로 주어진 주소값에서 옵션을 분리
if ( ! preg_match ('/^(.+)\|(.+)$/', $type, $matches) )
foreach ( $buf as $val ) {
if ( ! preg_match ('/^(.+)=>(.+)/', $val, $matches) )
$key = trim ($matches[1]);
$r->$key = trim ($matches[2]);
|