/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is JSIRC Library * * The Initial Developer of the Original Code is New Dimensions Consulting, * Inc. Portions created by New Dimensions Consulting, Inc. Copyright (C) 1999 * New Dimenstions Consulting, Inc. All Rights Reserved. * * * Contributor(s): * Robert Ginda, rginda@ndcico.com, original author * * JavaScript utility functions. * * 1999-08-15 rginda@ndcico.com v1.0 */ function CDCCChat (ep, host, port) { this.READ_TIMEOUT = 50; this.eventPump = ep; this.host = host; this.port = port; this.connection = new CBSConnection(); this.savedLine = ""; } CDCCChat.prototype.connect = function dchat_connect (host, port) { if (typeof host != "undefined") this.host = host; if (typeof port != "undefined") this.port = port; if (!this.connection.connect (this.host, this.port, (void 0), true)) return false; this.eventPump.addEvent (new CEvent ("dcc-chat", "poll", this, "onPoll")); return true; } CDCCChat.prototype.onPoll = function dchat_poll (e) { var line = ""; try { line = this.connection.readData (this.READ_TIMEOUT); } catch (ex) { if (typeof (ex) != "undefined") { this.connection.disconnect(); var e = new CEvent ("dcc-chat", "close", this, "onClose"); e.reason = "read-error"; e.exception = ex; this.eventPump.addEvent (e); return false; } else line = ""; } this.eventPump.addEvent (new CEvent ("dcc-chat", "poll", this, "onPoll")); if (line == "") return false; var incomplete = (line[line.length] != '\n'); var lines = line.split("\n"); if (this.savedLine) { lines[0] = this.savedLine + lines[0]; this.savedLine = ""; } if (incomplete) this.savedLine = lines.pop(); for (i in lines) { var ev = new CEvent("dcc-chat", "rawdata", this, "onRawData"); ev.data = lines[i]; ev.replyTo = this; this.eventPump.addEvent (ev); } return true; } CDCCChat.prototype.say = function dchat_say (msg) { this.connection.sendData (msg + "\n"); }