pickles/common/static/contrib/mediaplayer-3.15/source/com/jeroenwijering/utils/BandwidthCheck.as

82 lines
No EOL
2 KiB
ActionScript
Executable file

/**
* Check user bandwidth/connection speed over HTTP or RTMP.
*
* @example
* var bwc = new BandwidthCheck("http://www.server.com/upload/100k.jpg");
* bwc.onComplete = function(kbps) { trace(kbps); };
*
* @author Brian Weil
* @author Stefan Richter
* @author Jeroen Wijering
* @version 1.0
**/
class com.jeroenwijering.utils.BandwidthCheck {
/** MovieClipLoader instance **/
private var loader:MovieClipLoader;
/** NetConnection instance **/
private var connector:NetConnection;
/** MovieClip instance **/
private var clip:MovieClip;
/** Start time of test **/
private var startTime:Number;
/** Constructor for the BandwidthCheck **/
function BandwidthCheck(fil:String) {
var ref = this;
if (fil.indexOf("rtmp") == -1) {
loader = new MovieClipLoader;
loader.addListener(this);
clip = _root.createEmptyMovieClip("_bwchecker",1);
loader.loadClip(fil + "?" + random(9999),clip);
} else {
connector = new NetConnection();
connector.onStatus = function(info) {
if(info.code != "NetConnection.Connect.Success") {
ref.onComplete(0);
}
};
connector.connect(fil, true);
connector.onBWDone = function(kbps,dtd,dtt,lat) {
ref.onComplete(kbps);
};
connector.onBWCheck = function() {};
}
};
/** event handler for finished loading **/
private function onLoadComplete(tgt:MovieClip,hts:Number) {
tgt._visible = false;
var dat = new Date();
var ttl = clip.getBytesTotal();
var sec = (dat.getTime() - startTime)/1000;
var klb = ttl * 0.0078125*0.93;
var kbps = Math.floor(klb/sec);
onComplete(kbps);
clip.removeMovieClip();
};
/** event handler for loading error **/
private function onLoadError(tgt:MovieClip,err:String,stt:Number) {
onComplete(0);
};
/** event handler for loading start **/
private function onLoadStart() {
var d = new Date();
startTime = d.getTime();
};
/** event handler for completed test **/
public function onComplete() {};
}