KaZaServer progress, working on search functions
git-svn-id: svn://anubis/gvsu@37 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
parent
321043b407
commit
c6534cefca
@ -8,6 +8,7 @@ public class KaZaServer implements Runnable
|
||||
public static final int LISTEN_PORT = 3442;
|
||||
private ServerSocket m_serverSocket;
|
||||
private HashMap<String, ClientInfo> m_clientData;
|
||||
private Vector<Socket> m_peerGroupLeaders;
|
||||
|
||||
public void run()
|
||||
{
|
||||
@ -77,6 +78,7 @@ public class KaZaServer implements Runnable
|
||||
BufferedReader br = new BufferedReader(
|
||||
new InputStreamReader(
|
||||
m_socket.getInputStream()));
|
||||
DataOutputStream os = new DataOutputStream(socket.getOutputStream);
|
||||
|
||||
/* loop processing client messages */
|
||||
for (;;)
|
||||
@ -101,25 +103,66 @@ public class KaZaServer implements Runnable
|
||||
{
|
||||
/* user is giving us a description of a file */
|
||||
String fileName = inLine.substring(5);
|
||||
String fileDesc = "";
|
||||
boolean first = true;
|
||||
for (;;)
|
||||
{
|
||||
String descLine = br.readLine();
|
||||
if (descLine.equals("."))
|
||||
break;
|
||||
if (!first)
|
||||
fileDesc += "\n";
|
||||
fileDesc += descLine;
|
||||
first = false;
|
||||
}
|
||||
String fileDesc = br.readLine();
|
||||
synchronized (m_clientData)
|
||||
{
|
||||
m_clientInfo.files.put(fileName, fileDesc);
|
||||
}
|
||||
}
|
||||
else if (opCode.equals("SRCH"))
|
||||
{
|
||||
/* user is requesting a search */
|
||||
if (tokens.hasMoreTokens())
|
||||
{
|
||||
int depth = Integer.parseInt(tokens.nextToken());
|
||||
if (tokens.hasMoreTokens())
|
||||
{
|
||||
String query = tokens.nextToken();
|
||||
String searchResults = performSearch(depth, query);
|
||||
os.write(searchResults.getBytes();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) { }
|
||||
}
|
||||
}
|
||||
|
||||
private String performSearch(int depth, String query)
|
||||
{
|
||||
String results = "";
|
||||
if (depth > 0)
|
||||
{
|
||||
synchronized (m_peerGroupLeaders)
|
||||
{
|
||||
for (Socket s : m_peerGroupLeaders)
|
||||
{
|
||||
String peerResults =
|
||||
getSearchResultsFromPeerGroupLeader(s, depth-1, query);
|
||||
results += peerResults;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* now search my own file list */
|
||||
}
|
||||
|
||||
private String getSearchResultsFromPeerGroupLeader(Socket s, int depth, String query)
|
||||
{
|
||||
BufferedReader br = new BufferedReader(
|
||||
new InputStreamReader(
|
||||
s.getInputStream()));
|
||||
DataOutputStream os = new DataOutputStream(s.getOutputStream());
|
||||
|
||||
os.write("SRCH " + depth + " " + query);
|
||||
String searchResults = "";
|
||||
for (;;)
|
||||
{
|
||||
String inLine = br.readLine();
|
||||
if (inLine.equals("."))
|
||||
break;
|
||||
searchResults += inLine + "\n";
|
||||
}
|
||||
return searchResults;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user