001: // @@
002: // @@
003: /*
004: * Wi.Ser Framework
005: *
006: * LGPL Version: 1.8.1, 20-September-2007
007: * Copyright (C) 2005-2006 Dirk von der Weiden <dvdw@imail.de>
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library located in LGPL.txt in the
021: * license directory; if not, write to the
022: * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
023: * Boston, MA 02111-1307, USA.
024: *
025: * If this agreement does not cover your requirements, please contact us
026: * via email to get detailed information about the commercial license
027: * or our service offerings!
028: *
029: */
030: // @@
031: package de.ug2t.channel.ho.service;
032:
033: import java.io.*;
034: import java.net.*;
035:
036: import javax.net.ssl.*;
037:
038: import de.ug2t.channel.ho.session.*;
039: import de.ug2t.kernel.*;
040:
041: public final class HoServerService extends Thread implements
042: Serializable {
043: private ServerSocket pem_sSocket = null;
044: private int pem_port = 0;
045: private boolean pem_ssl = false;
046: private boolean pem_compress = false;
047: private boolean pem_collect = true;
048: private boolean pem_record = false;
049: private String pem_recorder = null;
050:
051: // @@
052:
053: public HoServerService(int xPort) throws Exception {
054: this .pem_port = xPort;
055: this .start();
056: };
057:
058: public HoServerService(int xPort, boolean xSSL, boolean xCompress,
059: boolean xCollect, String xRecorderClass, boolean xRecord)
060: throws Exception {
061: this .pem_port = xPort;
062: this .pem_ssl = xSSL;
063: this .pem_compress = xCompress;
064: this .pem_collect = xCollect;
065: this .pem_record = xRecord;
066: this .pem_recorder = xRecorderClass;
067:
068: this .start();
069:
070: while (pem_sSocket == null)
071: sleep(250);
072: };
073:
074: public void run() {
075: try {
076: HoTcpIpSession l_session = null;
077:
078: // @@
079:
080: pem_sSocket = new ServerSocket(pem_port);
081:
082: while (true) {
083: KeLog.pcmf_log("ug2t",
084: "serviceServer waiting for connection on port: "
085: + Integer.toString(this .pem_port),
086: this , KeLog.MESSAGE);
087: Socket l_socket = pem_sSocket.accept();
088: l_socket.setSoTimeout(0);
089:
090: boolean l_defaultRec = true;
091: if (this .pem_recorder == null)
092: this .pem_recorder = "de.ug2t.channel.ho.session.HoToFileSessionRecorder";
093: else
094: l_defaultRec = false;
095:
096: l_session = new HoTcpIpSession(l_socket,
097: this .pem_compress);
098: l_session.pcmf_setCollectReplies(pem_collect);
099: if (this .pem_record) {
100: IHoSessionRecorder l_rec = (IHoSessionRecorder) Class
101: .forName(this .pem_recorder).newInstance();
102: l_rec.pcmf_setSession(l_session);
103: l_session.pcmf_setSessionRecorder(l_rec);
104: l_session.pcmf_record(true);
105: } else if (l_defaultRec == false) {
106: IHoSessionRecorder l_rec = (IHoSessionRecorder) Class
107: .forName(this .pem_recorder).newInstance();
108: l_rec.pcmf_setSession(l_session);
109: l_session.pcmf_setSessionRecorder(l_rec);
110: } else if (l_defaultRec == true)
111: this .pem_recorder = null;
112:
113: l_session.start();
114: }
115: } catch (Exception e) {
116: KeLog.pcmf_logException("ug2t", this, e);
117: }
118: ;
119: return;
120: };
121: };
|