package MainLogic; import api.log.msec.org.AccessLog; import api.monitor.msec.org.AccessMonitor; import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.RpcController; import com.google.protobuf.ServiceException; import org.msec.rpc.ServiceFactory; import crawl.*; public class ServiceImpl implements Msec.MainLogicService.BlockingInterface { public static void main(String[] args) throws Exception { ServiceFactory.initModule("VOA_java.MainLogic"); ServiceFactory.addService("MainLogic.MainLogicService", Msec.MainLogicService.BlockingInterface.class, new ServiceImpl()); ServiceFactory.runService(); } public Msec.GetTitlesResponse getTitles(RpcController controller, Msec.GetTitlesRequest request) throws ServiceException { VOAJavaCrawl.GetMP3ListRequest.Builder requestBuilder = VOAJavaCrawl.GetMP3ListRequest.newBuilder(); AccessMonitor.add("getTitiles_entry"); //Add your code here: build your request requestBuilder.setType("special"); Msec.GetTitlesResponse.Builder responseBuilder = Msec.GetTitlesResponse.newBuilder(); VOAJavaCrawl.GetMP3ListRequest r = requestBuilder.build(); AccessLog.doLog(AccessLog.LOG_LEVEL_DEBUG, "Req:" + request); try { AccessMonitor.add("callmethod(CrawlService.getMP3List"); VOAJavaCrawl.GetMP3ListResponse response = (VOAJavaCrawl.GetMP3ListResponse) ServiceFactory.callMethod( "VOA_java.Crawl", "crawl.CrawlService.getMP3List", r, VOAJavaCrawl.GetMP3ListResponse.getDefaultInstance(), 30000); if (response.getStatus()!= 0) { throw new Exception("VOA_java.Crawl status:"+response.getStatus()); } for (int i = 0; i < response.getMp3SCount() ; i++) { VOAJavaCrawl.OneMP3 oneMP3 = response.getMp3S(i); String title = oneMP3.getTitle(); responseBuilder.addTitles(title); } AccessLog.doLog(AccessLog.LOG_LEVEL_INFO, "Resp OK:"+ response.getMp3SCount()); AccessLog.doLog(AccessLog.LOG_LEVEL_ERROR, "Resp OK"); } catch (Exception ex) { ex.printStackTrace(); responseBuilder.setMsg(ex.getMessage()); responseBuilder.setStatus(100); AccessMonitor.add("getTitiles_fail"); return responseBuilder.build(); } AccessMonitor.add("getTitiles_succ"); responseBuilder.setMsg("success"); responseBuilder.setStatus(0); return responseBuilder.build(); } public Msec.GetUrlByTitleResponse getUrlByTitle(RpcController controller, Msec.GetUrlByTitleRequest request) throws ServiceException { VOAJavaCrawl.GetMP3ListRequest.Builder requestBuilder = VOAJavaCrawl.GetMP3ListRequest.newBuilder(); AccessMonitor.add("getUrlByTitle_entry"); requestBuilder.setType("special"); Msec.GetUrlByTitleResponse.Builder responseBuilder = Msec.GetUrlByTitleResponse.newBuilder(); VOAJavaCrawl.GetMP3ListRequest r = requestBuilder.build(); try { AccessMonitor.add("callmethod(CrawlService.getMP3List"); VOAJavaCrawl.GetMP3ListResponse response = (VOAJavaCrawl.GetMP3ListResponse) ServiceFactory.callMethod("VOA_java.Crawl", "crawl.CrawlService.getMP3List", r, VOAJavaCrawl.GetMP3ListResponse.getDefaultInstance(), 30000); // System.out.println("Request:\n" + request + "Response:\n" + response); if (response.getStatus()!= 0) { throw new Exception("VOA_java.Crawl status:"+response.getStatus()); } for (int i = 0; i < response.getMp3SCount() ; i++) { VOAJavaCrawl.OneMP3 oneMP3 = response.getMp3S(i); String title = oneMP3.getTitle(); if (title.equals(request.getTitle())) { responseBuilder.setUrl(oneMP3.getUrl()); break; } } if (!responseBuilder.hasUrl()) { throw new Exception("failed to find url for "+request.getTitle()); } } catch (Exception ex) { ex.printStackTrace(); responseBuilder.setMsg(ex.getMessage()); responseBuilder.setStatus(100); AccessMonitor.add("getUrlByTitle_fail"); return responseBuilder.build(); } AccessMonitor.add("getUrlByTitle_succ"); responseBuilder.setMsg("success"); responseBuilder.setStatus(0); return responseBuilder.build(); } public Msec.DownloadMP3Response downloadMP3(RpcController controller, Msec.DownloadMP3Request request) throws ServiceException { //Add your code here return null; } }