KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > myoodb > core > AbstractClient


1 ///////////////////////////////////////////////////////////////////////////////
2
//
3
// Copyright (C) 2003-@year@ by Thomas M. Hazel, MyOODB (www.myoodb.org)
4
//
5
// All Rights Reserved
6
//
7
// This program is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License and GNU Library
9
// 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 Runnable JavaDoc
30 {
31     private boolean m_stop;
32     private Thread JavaDoc m_thread;
33     private AbstractServer m_server;
34     
35     public AbstractClient(Socket socket, AbstractServer server) throws IOException
36     {
37         super(socket);
38         m_stop = false;
39         m_server = server;
40         m_thread = server.newThread(this);
41     }
42     
43     public void run()
44     {
45         try
46         {
47             while (m_stop == false)
48             {
49                 m_server.processWork(this, receive(-1));
50             }
51
52             super.close();
53         }
54         catch (Exception JavaDoc e)
55         {
56             m_server.handleException(this, e);
57         }
58     }
59     
60     public synchronized void listen()
61     {
62         if (m_thread.isAlive() == false)
63         {
64             m_thread.start();
65         }
66     }
67     
68     public synchronized void close() throws IOException
69     {
70         m_stop = true;
71         super.close();
72     }
73     
74     public AbstractServer getServer()
75     {
76         return m_server;
77     }
78
79     public Thread JavaDoc getThread()
80     {
81         return m_thread;
82     }
83 }
84
Popular Tags