package org.commoncrawl.service.crawlmaster;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.concurrent.Semaphore;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.commoncrawl.server.AsyncWebServerRequest;
public class Servlets {
@SuppressWarnings("serial")
public static class ModifyMasterCrawlState extends HttpServlet {
@Override
protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
AsyncWebServerRequest request = new AsyncWebServerRequest("modifystate") {
@Override
public boolean handleRequest(final Semaphore completionSemaphore)throws IOException {
CrawlDBServer.getSingleton().explicitlySetMasterCrawlState(Integer.parseInt(req.getParameter("state")));
return false;
}
};
// ok this call will block ...
request.dispatch(CrawlDBServer.getSingleton().getEventLoop());
}
}
@SuppressWarnings("serial")
public static class ModifyCrawlNumber extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
final int desiredCrawlNumber = Integer.parseInt(req.getParameter("crawlnumber"));
final String target = req.getParameter("target");
AsyncWebServerRequest request = new AsyncWebServerRequest("modifycrawl_number") {
@Override
public boolean handleRequest(final Semaphore completionSemaphore)throws IOException {
if (target.equals("history")) {
CrawlDBServer.getSingleton().setHistoryServerCrawlNumber(desiredCrawlNumber);
}
else if (target.equals("crawler")) {
CrawlDBServer.getSingleton().setCrawlerCrawlNumber(desiredCrawlNumber);
}
// called within async event thread context ...
return false;
}
};
// ok this call will block ...
request.dispatch(CrawlDBServer.getSingleton().getEventLoop());
}
}
@SuppressWarnings("serial")
public static class SetHistoryServerTransitionState extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
AsyncWebServerRequest request = new AsyncWebServerRequest("set_transition") {
@Override
public boolean handleRequest(final Semaphore completionSemaphore)throws IOException {
CrawlDBServer.getSingleton().setHistoryServerTransitionState();
// called within async event thread context ...
return false;
}
};
// ok this call will block ...
request.dispatch(CrawlDBServer.getSingleton().getEventLoop());
}
}
@SuppressWarnings("serial")
public static class GetCrawlerNamesServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
for (String crawlerName : CrawlDBServer.getSingleton().getCrawlerNames()) {
writer.println(crawlerName);
}
}
}
}