package de.dtele.net.events {
  
  import de.dtele.net.MediaRequest;
  import de.dtele.net.MediaResponse;
  
  import flash.events.Event;
  
  /**
   * Notification for connection events
   * 
   * @author Mathias Brodala
   */
  public class ConnectionEvent extends Event {
    
    /* Constants */
    /**
     * The ConnectionEvent.OPENED constant defines the value of the 
     * <code>type</code> property of the event object 
     * for a <code>opened</code> event.
     * 
     * @eventType opened
     */
    public static const OPENED:String = "opened";
    /**
     * The ConnectionEvent.CLOSED constant defines the value of the 
     * <code>type</code> property of the event object 
     * for a <code>closed</code> event.
     * 
     * @eventType closed
     */
    public static const CLOSED:String = "closed";
    /**
     * The ConnectionEvent.RESPONSE constant defines the value of the 
     * <code>type</code> property of the event object 
     * for a <code>closed</code> event.
     * 
     * @eventType response
     */
    public static const RESPONSE:String = "response";
    
    /* Properties */
    private var _request:MediaRequest;
    /**
     * The MediaRequest this event's response was preceded by
     */
    public function get request():MediaRequest {
      return _request;
    }
    
    private var _response:MediaResponse;
    /**
     * The response this event was triggered for
     */
    public function get response():MediaResponse {
      return _response;
    }
    
    public function ConnectionEvent(type:String, request:MediaRequest=null, response:MediaResponse=null, bubbles:Boolean=false, cancelable:Boolean=false) {
      
      super(type, bubbles, cancelable);
      this._request = request;
      this._response = response;
    }
  }
}