01
02 /**
03 * Title: Advanced Network Client Sample<p>
04 * Description: <p>
05 * Copyright: Copyright (C) 2009 Alexey Veremenko<p>
06 * Company: <p>
07 * @author Alexey Veremenko
08 * @version 1.0
09 */
10 package networking.server;
11
12 import java.net.*;
13 import java.util.*;
14
15 /**
16 * MasterServerEx extends MasterServer to manage FileServers
17 */
18 class MasterServerEx extends MasterServer
19 {
20 /**
21 * List of registered servers
22 */
23 private List m_servers = new ArrayList();
24
25 /**
26 * Construct new MasterServerEx object
27 */
28 protected MasterServerEx()
29 {
30 }
31
32 /**
33 * Construct new MasterServerEx object to run on port @port
34 * @param port port number
35 */
36 protected MasterServerEx(int port)
37 {
38 super(port);
39 }
40
41 /**
42 * Register new file server
43 * @param s file server
44 */
45 synchronized void register(FileUploadServer s)
46 {
47 // Update list
48 m_servers.add(s);
49 }
50
51 /**
52 * Unregister file server
53 * @param s file server
54 */
55 synchronized void unregister(FileUploadServer s)
56 {
57 // Update list
58 m_servers.remove(s);
59 }
60
61 /**
62 * Shutdown the server
63 */
64 synchronized public void shutdown()
65 {
66 super.shutdown();
67
68 // Stop all forked servers
69 for (Iterator i = m_servers.iterator(); i.hasNext(); )
70 {
71 Server s = (Server)i.next();
72 s.stop1();
73 }
74 }
75
76 /**
77 * Get server object from id
78 * @param id id value
79 */
80 synchronized public final FileUploadServer getFileServer(long id)
81 {
82 // Check each server
83 for (Iterator i = m_servers.iterator(); i.hasNext(); )
84 {
85 FileUploadServer s = (FileUploadServer)i.next();
86 if (s.getId() == id)
87 return s;
88 }
89
90 return null;
91 }
92 }
|