search functionality for server implemented
git-svn-id: svn://anubis/gvsu@38 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
parent
c6534cefca
commit
ed4ccea45c
@ -78,7 +78,8 @@ public class KaZaServer implements Runnable
|
|||||||
BufferedReader br = new BufferedReader(
|
BufferedReader br = new BufferedReader(
|
||||||
new InputStreamReader(
|
new InputStreamReader(
|
||||||
m_socket.getInputStream()));
|
m_socket.getInputStream()));
|
||||||
DataOutputStream os = new DataOutputStream(socket.getOutputStream);
|
DataOutputStream os = new DataOutputStream(
|
||||||
|
m_socket.getOutputStream());
|
||||||
|
|
||||||
/* loop processing client messages */
|
/* loop processing client messages */
|
||||||
for (;;)
|
for (;;)
|
||||||
@ -90,7 +91,7 @@ public class KaZaServer implements Runnable
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
String opCode = tokens.nextToken();
|
String opCode = tokens.nextToken();
|
||||||
opCode.toUpperCase();
|
opCode = opCode.toUpperCase();
|
||||||
if (opCode.equals("HELO"))
|
if (opCode.equals("HELO"))
|
||||||
{
|
{
|
||||||
/* user is announcing his or her username */
|
/* user is announcing his or her username */
|
||||||
@ -119,7 +120,8 @@ public class KaZaServer implements Runnable
|
|||||||
{
|
{
|
||||||
String query = tokens.nextToken();
|
String query = tokens.nextToken();
|
||||||
String searchResults = performSearch(depth, query);
|
String searchResults = performSearch(depth, query);
|
||||||
os.write(searchResults.getBytes();
|
os.writeBytes(searchResults);
|
||||||
|
os.writeBytes(".\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -131,6 +133,7 @@ public class KaZaServer implements Runnable
|
|||||||
private String performSearch(int depth, String query)
|
private String performSearch(int depth, String query)
|
||||||
{
|
{
|
||||||
String results = "";
|
String results = "";
|
||||||
|
String querylc = query.toLowerCase();
|
||||||
if (depth > 0)
|
if (depth > 0)
|
||||||
{
|
{
|
||||||
synchronized (m_peerGroupLeaders)
|
synchronized (m_peerGroupLeaders)
|
||||||
@ -145,23 +148,53 @@ public class KaZaServer implements Runnable
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* now search my own file list */
|
/* now search my own file list */
|
||||||
|
synchronized (m_clientData)
|
||||||
|
{
|
||||||
|
Set<String> clients = m_clientData.keySet();
|
||||||
|
for (String clientIP : clients)
|
||||||
|
{
|
||||||
|
HashMap<String, String> files = m_clientData.get(clientIP).files;
|
||||||
|
Set<String> clientFiles = files.keySet();
|
||||||
|
for (String fileName : clientFiles)
|
||||||
|
{
|
||||||
|
String fnamelc = fileName.toLowerCase();
|
||||||
|
if ( (fnamelc.indexOf(querylc) >= 0) ||
|
||||||
|
(files.get(fileName).toLowerCase().indexOf(querylc) >= 0) )
|
||||||
|
{
|
||||||
|
results += clientIP + "|" +
|
||||||
|
m_clientData.get(clientIP).userName + "|" +
|
||||||
|
fileName + "|" +
|
||||||
|
files.get(fileName) + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getSearchResultsFromPeerGroupLeader(Socket s, int depth, String query)
|
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 = "";
|
String searchResults = "";
|
||||||
for (;;)
|
try
|
||||||
{
|
{
|
||||||
String inLine = br.readLine();
|
BufferedReader br = new BufferedReader(
|
||||||
if (inLine.equals("."))
|
new InputStreamReader(
|
||||||
break;
|
s.getInputStream()));
|
||||||
searchResults += inLine + "\n";
|
DataOutputStream os = new DataOutputStream(s.getOutputStream());
|
||||||
|
|
||||||
|
os.writeBytes("SRCH " + depth + " " + query);
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
String inLine = br.readLine();
|
||||||
|
if (inLine.equals("."))
|
||||||
|
break;
|
||||||
|
searchResults += inLine + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
return searchResults;
|
return searchResults;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user