]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/irc/ircconnection.js
619251b99ccb53f6c2b332166a6f4a69b1968574
1 /* This could do with a rewrite from scratch. */
3 var IRCConnection
= new Class({
4 Implements: [Events
, Options
],
6 initialNickname: "ircconnX",
10 initialize: function(options
) {
11 this.setOptions(options
);
13 this.initialNickname
= this.options
.initialNickname
;
16 this.disconnected
= false;
18 this.activerequest
= null;
19 this.timeoutid
= null;
21 __error: function(text
) {
22 this.fireEvent("error", text
);
26 send: function(data
) {
29 var r
= new Request
.JSON({url: "/e/p/" + this.sessionid
+ "?c=" + encodeURIComponent(data
) + "&t=" + this.counter
++, onComplete: function(o
) {
30 if(!o
|| (o
[0] == false)) {
31 if(!this.disconnected
) {
32 this.disconnected
= true;
33 this.__error("An error occured: " + o
[1]);
42 __timeout: function() {
43 if(this.lastactiverequest
) {
44 this.lastactiverequest
.cancel();
45 this.lastactiverequest
= null;
46 alert("warning: last active request");
48 if(this.activerequest
) {
49 this.lastactiverequest
= this.activerequest
;
50 /*this.activerequest.cancel();
51 this.activerequest = null;*/
53 if($defined(this.timeoutid
)) {
54 $clear(this.timeoutid
);
55 this.timeoutid
= null;
60 var r
= new Request
.JSON({url: "/e/s/" + this.sessionid
+ "?t=" + this.counter
++, onComplete: function(o
) {
61 if(this.lastactiverequest
!= r
)
62 this.activerequest
= null;
64 if($defined(this.timeoutid
)) {
65 $clear(this.timeoutid
);
66 this.timeoutid
= null;
70 if(this.lastactiverequest
== r
)
71 this.lastactiverequest
= null;
74 if(!this.disconnected
) {
75 this.disconnected
= true;
77 this.__error("An error occured: " + o
[1]);
82 this.fireEvent("recv", [x
]);
85 if(this.lastactiverequest
== r
) {
86 this.lastactiverequest
= null;
89 if(!this.disconnected
) {
91 this.disconnected
= true;
93 this.__error("Error: the server closed the connection.");
104 if(this.options
.timeout
)
105 this.timeoutid
= this.__timeout
.delay(this.options
.timeout
, this);
107 this.activerequest
= r
;
110 connect: function() {
111 var r
= new Request
.JSON({url: "/e/n?nick=" + encodeURIComponent(this.initialNickname
) + "&r=" + Math
.random() * 1024 * 1024, onComplete: function(o
) {
113 this.disconnected
= true;
114 alert("Couldn't connect to remote server.");
118 this.disconnected
= true;
119 this.__error("An error occured: " + o
[1]);
122 this.sessionid
= o
[1];
128 disconnect: function() {
129 this.disconnected
= true;