/**
  * Starts the socket connection
  */
 public function startSocket()
 {
     // get connection configuration
     $conf = Services::getConfiguration()->get('connection');
     // validate configuration
     if (!isset($conf['hostname'], $conf['port'])) {
         throw new Exception("Invalid connection configuration!");
     }
     // create socket
     // $this->socket = socket_create(AF_INET, SOCK_STREAM, 0);
     $this->socket = fsockopen($conf['hostname'], intval($conf['port']));
     // try to connect
     /* 
     		if (!@socket_connect($this->socket, $conf['hostname'], intval($conf['port']))) {
     			throw new Exception("Cannot connect to server: ".socket_strerror());
     		} */
 }
 /**
  * Loads the memcache extension
  */
 public static function loadMemcache()
 {
     $memcache = Services::getConfiguration()->get('memcache');
     if ($memcache === null or !extension_loaded('memcache')) {
         self::getConnection()->getProtocol()->sendLogLine("Cannot use memcache! No configuration found!");
     } elseif (is_array($memcache['servers'])) {
         require_once SDIR . 'lib/system/cache/CacheSource.class.php';
         self::$memcacheObj = new CacheSource();
         // add server
         foreach ($memcache['servers'] as $server) {
             // create needed array
             $arguments = array();
             // get server address
             if (!isset($server['address'])) {
                 throw new Exception("Invalid memcache configuration: address tag is missing!");
             }
             $arguments[] = $server['address'];
             // get port
             if (isset($server['port'])) {
                 $arguments[] = $server['port'];
             }
             // get persistent option
             if (isset($server['persistent'])) {
                 $arguments[] = (bool) intval($server['persistent']);
             }
             // add server
             call_user_func_array(array(self::$memcacheObj, 'addServer'), $arguments);
             // remove temp variables
             unset($arguments);
         }
         // flush old cache (we'll have old resources if the applications was killed)
         self::$memcacheObj->flush();
         // test connection
         self::$memcacheObj->add('SERVICES_VERSION', SERVICES_VERSION);
         if (self::$memcacheObj->get('SERVICES_VERSION') !== false) {
             // add log entry
             self::getConnection()->getProtocol()->sendLogLine("Etablished connection to memcache server!");
         } else {
             // add log entry
             self::getConnection()->getProtocol()->sendLogLine("An error occoured with memcache! I'll disable it ...");
             // disable memcache
             self::$memcacheObj = null;
         }
     }
 }
 /**
  * Creates a new instance of type Protocol
  */
 protected function __construct()
 {
     // get configuration
     $conf = Services::getConfiguration()->get('connection');
     // write vars
     foreach ($conf as $name => $val) {
         // I'm to lazy to add all vals ... ;-)
         if (property_exists($this, $name)) {
             $this->{$name} = $val;
         }
     }
 }