File: ProcessCommunicationService.java

package info (click to toggle)
dicomscope 3.6.0-28
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,256 kB
  • sloc: java: 22,911; cpp: 5,957; sh: 270; makefile: 45
file content (150 lines) | stat: -rw-r--r-- 3,698 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/*
 *
 *  Copyright (C) 1999, Institute for MicroTherapy
 *
 *  This software and supporting documentation were developed by
 *
 *    University of Witten/Herdecke
 *    Department of Radiology and MicroTherapy
 *    Institute for MicroTherapy
 *    Medical computer science
 *    
 *    Universitaetsstrasse 142
 *    44799 Bochum, Germany
 *    
 *    http://www.microtherapy.de/go/cs
 *    mailto:computer.science@microtherapy.de
 *
 *  THIS SOFTWARE IS MADE AVAILABLE,  AS IS,  AND THE INSTITUTE MAKES  NO 
 *  WARRANTY REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY
 *  OR FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES 
 *  OR ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY 
 *  AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER.
 *
 *  Author :      $Author: kleber $
 *  Last update : $Date: 2001/06/06 10:32:30 $
 *  Revision :    $Revision: 1.1.1.1 $
 *  State:        $State: Exp $
*/


package processCommunication;

import java.io.*;
import java.net.*;
import java.util.*;

/**
 * This class receives connection from any DICOMscope process and 
 * start for each connection ProcessCommunicationService in his own Thread 
 * @author Klaus Kleber
 * @since 15.10.2000
 */
public class ProcessCommunicationService implements Runnable
{   
    /**
    * Port
    */
    private int messagePort = 11000;
    
    
    private boolean keepMessagePortOpen=false;
    
    /**
    * Received Socket 
    */
    private Socket cSocket; 
    
    private boolean isReady = false;
    
    /**
    * Constuctor. Start the Receiver in his own Thread
    */
    public ProcessCommunicationService(int messagePort , boolean keepMessagePortOpen)
    {
        if(messagePort != 0 )
        {
            new Thread(this).start();
            messagePort = messagePort;
            keepMessagePortOpen = keepMessagePortOpen;
            waitForServerSocket();
        }
        // else isReady = true;
    }
   
    private synchronized void waitForServerSocket()
    {
            if (isReady == false) 
            {
               try
               {
                    wait();
               }
               catch (InterruptedException e)
               {
                    System.err.println(e);
               }
            }
    }
    
    public synchronized void serverSocketisReady()
    {
           isReady= true;
           notify();
    }
    
    /**
    * Run
    */
    public void run()
    {
        
        
        Thread.currentThread().setPriority(Thread.NORM_PRIORITY-1);
        ServerSocket sSocket= null;
        try
        {
        
           sSocket = new ServerSocket(messagePort);
            while(true)
            {
                if (sSocket != null)
                {
                    //System.err.println("wait on port: " + messagePort);
                    serverSocketisReady();
                    while ((cSocket = sSocket.accept()) != null)
                    {
                        //System.err.println("Receive new connection "  );
                        new ProcessCommunicationHandler(cSocket).start();
                        
                    }
                }
            }
         }   
        //Anmeldung an Socket nicht gelungen
        catch (IOException e)
        {
            System.err.println(e);
            
        }
        finally
        {
            try
            {
                sSocket.close();
            }
            catch(Exception t){}
        }
        
        
    }
}

/*
 *  CVS Log
 *  $Log: ProcessCommunicationService.java,v $
 *  Revision 1.1.1.1  2001/06/06 10:32:30  kleber
 *  Init commit for DICOMscope 3.5
 *  Create new CVS
 *
*/