home *** CD-ROM | disk | FTP | other *** search
- function SocketReader(callback,host,port,ssl) {
- this.callback=callback;
- var transportService =
- Components.classes["@mozilla.org/network/socket-transport-service;1"]
- .getService(Components.interfaces.nsISocketTransportService);
- /* //
- var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
- var uri = ios.newURI("https://"+host+":"+port, null, null);
- var pps = Components.classes["@mozilla.org/network/protocol-proxy-service;1"].getService();
- var pi=pps.resolve(uri,0);
- if(pi!=null&&pi.type.indexOf("sock")==-1)pi=null;
- dout(pi);
- dout(pi.type);*/
- //
- this.transport = transportService.createTransport(ssl?["ssl"]:null,ssl?1:0,host,port,null);
- this.outstream = this.transport.openOutputStream(0,0,0);
- var stream = this.transport.openInputStream(0,0,0);
- this.instream = Components.classes["@mozilla.org/scriptableinputstream;1"]
- .createInstance(Components.interfaces.nsIScriptableInputStream);
- this.instream.init(stream);
- var pump = Components.
- classes["@mozilla.org/network/input-stream-pump;1"].
- createInstance(Components.interfaces.nsIInputStreamPump);
- pump.init(stream, -1, -1, 0, 0, false);
- pump.asyncRead(this,null);
- }
- SocketReader.prototype.write = function (data) {
- this.outstream.write(data,data.length);
- }
- SocketReader.prototype.onStartRequest = function (aRequest, aContext) {
- }
- SocketReader.prototype.onDataAvailable = function (aRequest, aContext, aStream, aSourceOffset, aLength){
- if(this.callback)this.callback.processSocket(this.instream.read(aLength),1);
- }
-
- SocketReader.prototype.onStopRequest = function (aRequest, aContext, aStatus) {
- this.close();
- }
- SocketReader.prototype.close = function () {
- this.instream.close();
- this.transport.close(Components.results.NS_BINDING_ABORTED);
- }
-