Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: CSServerList/CSServerList.java


1   package CSServerList;
2   
3   import java.io.*;
4   import java.net.*;
5   import java.util.*;
6   import jcsq.CSServer;
7   import jcsq.player.Player;
8   import jcsq.serverinfo.ServerInfo;
9   import jcsq.rules.Rules;
10  
11  /**
12    A <code>CSServerList</code> object represents a list of CounterStrike gaming servers.
13  
14    @author Mitch Davis
15    @version 0.1.3a
16    @see <a href="http://sourceforge.net/projects/jcsgp/">JCSGP Project</a>
17  */
18  
19  
20  public class CSServerList
21  {
22  /**
23    Constructor for the CSServerList, creates a Server list based upon a list of IP's in an ANSI text file
24    Usage example:
25    <code>CSServerList myServers = new CSServerList("servers.ip");</code>
26  
27    @param sFileName a string containing the filename to use (URL support coming soon)
28  
29  
30  */
31    public CSServerList(String sFileName)
32    {
33      try{
34        this.brFile = new BufferedReader( new FileReader( sFileName ) );
35        bFileOpenAlready = true;
36         }
37      catch(IOException e){
38        e.printStackTrace();
39         }
40  
41      readServers();
42    }
43  
44  /** TO BE IMPLIMENTED LATER
45    public CSServerList(InputStreamReader isrFile)
46    {
47      try{
48        this.brFile = new BufferedReader(isrFile);
49        bFileOpenAlready = true;
50         }
51      catch(IOException e){
52        e.printStackTrace();
53      }
54  
55      readServers();
56    }
57  
58    public boolean closeFile()
59    {
60      if( bFileOpenAlready )
61      {
62        try{
63          brFile.close();
64           }
65        catch(IOException e){
66          e.printStackTrace();
67           }
68        return true;
69      }
70      else
71        return false;
72    }
73  */
74  
75  /**
76    <code>openFile</code> - opens specified file (URL support coming soon) if a file has not already been opened
77    Multiple server files support coming soon.  This function is currently not supported.
78  
79    @param sFileName a string containing the filename to use
80  
81  */
82    public boolean openFile( String sFileName )
83    {
84      if( bFileOpenAlready )
85        return false;
86      else
87      {
88        try{
89          brFile = new BufferedReader( new FileReader(sFileName) );
90        }
91        catch(IOException e){
92          e.printStackTrace();
93        }
94  
95        readServers();
96        return true;
97      }
98    }
99  
100 /**
101   <code>getNumServers</code> returns the number of servers in the CSServerList
102   Usage example:
103   <code>CSServerList myServers = ....
104   .
105   .
106   .
107   int nServerListSize = myServers.getNumServers();</code>
108 
109   @return integer of the number of servers in the list
110 */
111   public int getNumServers()
112   {
113     return serverIPList.size();
114   }
115 /**
116   <code>getServerList</code> returns a String[] of all the IP's in the server list
117   Usage example:
118   <code>CSServerList myServers = ....
119   .
120   .
121   .
122   String[] sIpList = myServers.getServerList();</code>
123 
124   @return a String[] of IP's in xxx.xxx.xxx.xxx format
125 */
126   public String[] getServerList()
127   {
128     String[] servers = new String[serverIPList.size()];
129     serverIPList.toArray(servers);
130 
131     return servers;
132   }
133 /**
134   <code>getServerIP</code> gets a specified server's IP in a String format
135   Usage example:
136   <code>CSServerList myServers = .....
137   .
138   .
139   .
140   String sServerIP = myServer.getServerIP(0);</code>
141   @param i the index number of the server whose IP is to be retrieved
142   @return a String of the server's IP
143 */
144   public String getServerIP(int i)
145   {
146     return ((CSServer)serverList.get(i)).getIp();
147   }
148 /**
149   <code>getServerInfo</code> returns a specified server's ServerInfo object
150   Usage example:
151   <code>CSServerList myServers = ....
152   .
153   .
154   .
155   ServerInfo siServerInfo = new ServerInfo();
156   siServerInfo = myServers.getServerInfo(0);</code>
157   @param i the index number of the server whose ServerInfo is to be retrieved
158   @return a ServerInfo object for the specified server
159 */
160   public ServerInfo getServerInfo(int i)
161   {
162     ServerInfo server = (ServerInfo)infoList.get(i);
163     return server;
164   }
165 /**
166   <code>getCSServer</code> returns a pointer to a specified server's CSServer object
167   Usage example:
168   <code>CSServerList myServers = ....
169   .
170   .
171   .
172   CSServer csServer = myServers.getCSServer(0);</code>
173   use clone to make a copy of the object
174   @param i the index number of the server whose CSServer is to be recieved
175   @return a pointer to the CSServer object for the specified server
176 */
177   public CSServer getCSServer(int i)
178   {
179     return (CSServer)serverList.get(i);
180   }
181 /**
182   <code>getPing</code> will ping a server
183   Usage example:
184   <code>CSServerList myServers = ....
185   .
186   .
187   .
188   int ping = myServer.getPing(0);
189   @param i the index number of the server to be pinged
190   @return a 'long' representing th eping in miliseconds
191 */
192   public long getPing(int i)
193   {
194     return ((Long)pingList.get(i)).longValue();
195   }
196 
197   public void addServer(String server)
198   {
199     serverIPList.add(server);
200   }
201 
202   /**
203   public void refreshServers(int[] indexNums);
204   {
205   //TODO
206   }
207 
208   public void refreshServers()
209   {
210   //TODO
211   }
212   */
213 
214 
215   private void readServers()
216   {
217     serverIPList = new ArrayList(10);
218     serverList = new ArrayList(10);
219     infoList = new ArrayList(10);
220     pingList = new ArrayList(10);
221 
222     String line;
223     try{
224       while( (line = brFile.readLine()) != null )
225         serverIPList.add( new String( line ) );
226       for( int i = 0; i < serverIPList.size(); i++)
227       {
228         CSServer serverTemp = new CSServer( (String)serverIPList.get(i), 27005 );
229         ServerInfo infoTemp = new ServerInfo();
230         serverTemp.setTimeout(100);
231         infoTemp = serverTemp.getServerInfo();
232 
233         serverTemp.closeServer();
234 
235         Long pingTemp = new Long( serverTemp.ping() );
236 
237 
238 
239         serverList.add( serverTemp );
240         pingList.add( pingTemp );
241         //don't ask... it just works
242         for(int j = 0; j < 1000000; j++)
243         {
244         }
245         infoList.add( infoTemp );
246 
247       }
248     }
249     catch(IOException e)
250     {
251       e.printStackTrace();
252     }
253     catch(Exception e){
254           System.out.println("Couldn't connect to server, reason: "+e.getMessage());
255           e.printStackTrace();
256        }
257 
258 
259   }
260 
261 
262   //inputstream objects
263   private BufferedReader    brFile;
264   private boolean      bFileOpenAlready;
265   private ArrayList    serverIPList;
266   private ArrayList    serverList;
267   private ArrayList    infoList;
268   private ArrayList    pingList;
269 
270 }