PHP Classes

File: ANYEM_CLIENT/anyem.client.impl/AnyemClientImpl.php

Recommend this page to a friend!
  Classes of Anis Halayem   Anyem   ANYEM_CLIENT/anyem.client.impl/AnyemClientImpl.php   Download  
File: ANYEM_CLIENT/anyem.client.impl/AnyemClientImpl.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Anyem
Exchange variable values between PHP servers
Author: By
Last change:
Date: 9 years ago
Size: 4,896 bytes
 

Contents

Class file image Download
<?php
require_once (__DIR__ . '/../../ANYEM_SHARED/' . 'anyem.resource.impl/ResponseWrapperImpl.php') ;
require_once (
__DIR__ . '/../../ANYEM_SHARED/' . 'anyem.utils/AnyemConfigReaderimpl.php');
require_once (
__DIR__ . '/../../ANYEM_SHARED/' . 'anyem.logger/apache-log4php-2.3.0/src/main/php/Logger.php');

require_once (
__DIR__ . '/ClientImpl.php');

/**
 * Description of AnyemClientImpl
 *
 * @author Anis.Halayem
 */
class AnyemClientImpl extends ClientImpl{
    private static
$_DEFAULT_MAX_ATTEMPT = NULL;
    private static
$_DEFAULT_DELAY_ATTEMPT = NULL;
    private static
$_LOG = NULL;
    private static
$_INITIALIZED = FALSE;
   
    public static function
init() {
        if (
self::$_INITIALIZED === FALSE) {
           
$anyemConfigReader = new AnyemConfigReaderImpl (__DIR__ . '/../config/anyem_config.properties');
           
self::$_DEFAULT_MAX_ATTEMPT = $anyemConfigReader->readConfig (self::DEFAULT_MAX_ATTEMPT);
           
self::$_DEFAULT_DELAY_ATTEMPT = $anyemConfigReader->readConfig (self::DEFAULT_DELAY_ATTEMPT);
           
           
Logger::configure (__DIR__ . '/../config/log4php/config.xml') ;
           
self::$_LOG = Logger::getLogger(__CLASS__);
           
           
self::$_INITIALIZED = TRUE;
        }
    }
   
   
/**
     * @param mixed $data_m
     * @param int $maxAttempt, default value is set in configuration file
     * @param int $delayAttempt in microseconde, default value is set in configuration file
     * @return ResponseWrapperImpl
     * @throws Exception
     */

   
public function get ($data_m, $maxAttempt = NULL, $delayAttempt = NULL) {
        if (
is_null ($maxAttempt)) { $maxAttempt = self::$_DEFAULT_MAX_ATTEMPT ; }
        if (
is_null ($delayAttempt)) { $delayAttempt = self::$_DEFAULT_DELAY_ATTEMPT ; }
       
        return
$this->action('get', $data_m, $maxAttempt, $delayAttempt);
    }
   
   
/**
     * @param mixed $data_m
     * @param int $maxAttempt, default value is set in configuration file
     * @param int $delayAttempt in microseconde, default value is set in configuration file
     * @return ResponseWrapperImpl
     * @throws Exception
     */

   
public function release ($maxAttempt = NULL, $delayAttempt = NULL) {
        if (
is_null ($maxAttempt)) { $maxAttempt = self::$_DEFAULT_MAX_ATTEMPT ; }
        if (
is_null ($delayAttempt)) { $delayAttempt = self::$_DEFAULT_DELAY_ATTEMPT ; }
       
        return
$this->action('release', NULL, $maxAttempt, $delayAttempt);
    }
   
   
   
/**
     * @param mixed $data_m
     * @param int $maxAttempt, default value is set in configuration file
     * @param int $delayAttempt in microseconde, default value is set in configuration file
     * @return ResponseWrapperImpl
     * @throws Exception
     */

   
public function delete ($maxAttempt = NULL, $delayAttempt = NULL) {
        if (
is_null ($maxAttempt)) { $maxAttempt = self::$_DEFAULT_MAX_ATTEMPT ; }
        if (
is_null ($delayAttempt)) { $delayAttempt = self::$_DEFAULT_DELAY_ATTEMPT ; }
       
        return
$this->action('delete', NULL, $maxAttempt, $delayAttempt);
    }
   
   
    public function
action ($action, $parameter, $maxAttempt, $delayAttempt) {
       
$ma = $maxAttempt;
       
        do {
           
/**
             * @var ResponseWrapperImpl
             */
           
$responseWrapper = (is_null($parameter) ? parent::{$action}() : parent::{$action}($parameter)) ;
            if (
$responseWrapper->getResponseCode() != ResponseWrapperImpl::SUCCESS_RESPONSE_CODE) {
               
self::$_LOG->info(sprintf("can not <%s>' the resource\n" .
                                         
"response code : %s\n" .
                                         
"response message : %s",
                                         
strtoupper($action),
                                         
$responseWrapper->getResponseCode(),
                                         
$responseWrapper->getErrorMessage()));
               
usleep ($delayAttempt);
            }
            else {
               
self::$_LOG->info (sprintf ("<%s> the resource in attempt n°: %d/%d, total time spent: %d µs",
                                           
strtoupper($action),
                                           
$maxAttempt - $ma,
                                           
$maxAttempt,
                                           (
$maxAttempt - $ma) * $delayAttempt));
                return
$responseWrapper;
            }
        }while (--
$ma >= 0);
       
       
$errorMsg = sprintf("all attempts are used without releasing the resource (total = %s)", $maxAttempt);
       
self::$_LOG->error ($errorMsg);
        throw new
Exception ($errorMsg);
    }
}

AnyemClientImpl::init();