01: ///////////////////////////////////////////////////////////////////////////////
02: //
03: // Copyright (C) 2003-@year@ by Thomas M. Hazel, MyOODB (www.myoodb.org)
04: //
05: // All Rights Reserved
06: //
07: // This program is free software; you can redistribute it and/or modify
08: // it under the terms of the GNU General Public License and GNU Library
09: // General Public License as published by the Free Software Foundation;
10: // either version 2, or (at your option) any later version.
11: //
12: // This program is distributed in the hope that it will be useful,
13: // but WITHOUT ANY WARRANTY; without even the implied warranty of
14: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: // GNU General Public License and GNU Library General Public License
16: // for more details.
17: //
18: // You should have received a copy of the GNU General Public License
19: // and GNU Library General Public License along with this program; if
20: // not, write to the Free Software Foundation, 675 Mass Ave, Cambridge,
21: // MA 02139, USA.
22: //
23: ///////////////////////////////////////////////////////////////////////////////
24: package org.myoodb.core;
25:
26: import java.io.*;
27: import java.net.*;
28:
29: public abstract class AbstractClient extends AbstractSocket implements
30: Runnable {
31: private boolean m_stop;
32: private Thread m_thread;
33: private AbstractServer m_server;
34:
35: public AbstractClient(AbstractDatabase db, Socket socket,
36: AbstractServer server) throws IOException {
37: super (db, socket);
38: m_stop = false;
39: m_server = server;
40: m_thread = server.newThread(this );
41: }
42:
43: public void run() {
44: try {
45: while (m_stop == false) {
46: m_server.processWork(this , receive(-1));
47: }
48:
49: super .close();
50: } catch (Exception e) {
51: m_server.handleException(this , e);
52: }
53: }
54:
55: public synchronized void listen() {
56: if (m_thread.isAlive() == false) {
57: m_thread.setName("MyOodb Tcp Client Thread: "
58: + m_socket.getLocalAddress());
59: m_thread.start();
60: }
61: }
62:
63: public void close() throws IOException {
64: m_stop = true;
65: super .close();
66: }
67:
68: public AbstractServer getServer() {
69: return m_server;
70: }
71:
72: public Thread getThread() {
73: return m_thread;
74: }
75: }
|