<?php

namespace Kicken\Chat;


abstract class 
StreamSocketServer extends StreamSocket {
    
/** @var callable[] */
    
private $mOnAccept = [];

    public function 
__construct($resource){
        
parent::__construct($resource);
    }

    public function 
nowReadable(){
        
$child $this->accept();
        foreach (
$this->mOnAccept as $cb){
            
$cb($child);
        }
    }

    public function 
nowWritable(){
    }

    public function 
onAccept(callable $cb){
        
$this->mOnAccept[] = $cb;
    }

    public function 
hasPendingWrites(){
        return 
false;
    }

    private function 
accept(){
        return 
stream_socket_accept($this->mResource);
    }
}