Вход Регистрация
Файл: monst/Xsolla/Guzzle/Http/IoEmittingEntityBody.php
Строк: 96
<?php

namespace GuzzleHttp;

use 
GuzzleCommonEvent;
use 
GuzzleCommonHasDispatcherInterface;
use 
SymfonyComponentEventDispatcherEventDispatcher;
use 
SymfonyComponentEventDispatcherEventSubscriberInterface;
use 
SymfonyComponentEventDispatcherEventDispatcherInterface;

/**
 * EntityBody decorator that emits events for read and write methods
 */
class IoEmittingEntityBody extends AbstractEntityBodyDecorator implements HasDispatcherInterface
{
    
/** @var EventDispatcherInterface */
    
protected $eventDispatcher;

    public static function 
getAllEvents()
    {
        return array(
'body.read''body.write');
    }

    
/**
     * {@inheritdoc}
     * @codeCoverageIgnore
     */
    
public function setEventDispatcher(EventDispatcherInterface $eventDispatcher)
    {
        
$this->eventDispatcher $eventDispatcher;

        return 
$this;
    }

    public function 
getEventDispatcher()
    {
        if (!
$this->eventDispatcher) {
            
$this->eventDispatcher = new EventDispatcher();
        }

        return 
$this->eventDispatcher;
    }

    public function 
dispatch($eventName, array $context = array())
    {
        return 
$this->getEventDispatcher()->dispatch($eventName, new Event($context));
    }

    
/**
     * {@inheritdoc}
     * @codeCoverageIgnore
     */
    
public function addSubscriber(EventSubscriberInterface $subscriber)
    {
        
$this->getEventDispatcher()->addSubscriber($subscriber);

        return 
$this;
    }

    public function 
read($length)
    {
        
$event = array(
            
'body'   => $this,
            
'length' => $length,
            
'read'   => $this->body->read($length)
        );
        
$this->dispatch('body.read'$event);

        return 
$event['read'];
    }

    public function 
write($string)
    {
        
$event = array(
            
'body'   => $this,
            
'write'  => $string,
            
'result' => $this->body->write($string)
        );
        
$this->dispatch('body.write'$event);

        return 
$event['result'];
    }
}
Онлайн: 1
Реклама