<?php
abstract class MasterBot_Stream {
    
    function 
__construct(){
        
$this->open_stdin();
    }
    
    
    function 
open_stdin(){
        
//define('STDIN',fopen('php://stdin','r'));
        
$this->stdin fopen('php://stdin','r');
        
// we want to wait for input
        //stream_set_blocking(STDIN,1);
    
}
    
    function 
read_event(){
        
$data fread($this->stdin8192);
        if(!
$data){
            echo 
"No data\n";
            return 
false;
        }
    }
    
    function 
process_event_data($data){
        
$event simplexml_load_string($data);
        echo 
"Event: ",$v->getName(),"\n";
        echo 
"Attributes: ",$v->attributes(),"\n\n";
    }
    
    function 
process_next_event($data){
        
$data $this->process_event_data();
        if(!
$data) return false;
        return 
$this->process_event_data($data);
    }
    
    
// events
    
    
abstract function eventJoin();
    abstract function 
eventQuit();
    abstract function 
eventMessage();
    
    abstract function 
eventSpawn();
    abstract function 
eventKill();
    abstract function 
eventScoreChange();
    abstract function 
eventMove();
    
    abstract function 
eventFlagGrab();
    abstract function 
eventFlagDrop();
    abstract function 
eventFlagEvaporate();
    abstract function 
eventFlagSpawn();
    abstract function 
eventFlagCapture();
    
    abstract function 
eventTimerEnd();
    
    
// functions
    
function registerEvent(){
        
    }
    
    function 
deRegisterEvent(){
        
    }
    
    function 
sendMessage(){
        
    }
    
    function 
timerSet(){
        
    }
    
    function 
timerStart(){
        
    }
    
    function 
timerStop(){
        
    }
    
    function 
tankKill(){
        
    }
    
    function 
weaponFire(){
        
    }
    
    function 
weaponFire(){
        
    }
    
}

$s = new MasterBot_Stream();
$s->process_next_event();
?>