package com.neverwinterdp.sparkngin.http;
import org.slf4j.Logger;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.neverwinterdp.netty.http.HttpServer;
import com.neverwinterdp.netty.http.StaticFileHandler;
import com.neverwinterdp.server.module.ModuleProperties;
import com.neverwinterdp.server.service.AbstractService;
import com.neverwinterdp.sparkngin.Sparkngin;
import com.neverwinterdp.util.JSONSerializer;
import com.neverwinterdp.util.LoggerFactory;
public class SparknginHttpConnectorService extends AbstractService {
private LoggerFactory loggerFactory ;
private Logger logger ;
private HttpServer server ;
@Inject
private Sparkngin sparkngin ;
private SparknginHttpConnectorServiceInfo serviceInfo ;
@Inject
public void init(Injector container,
LoggerFactory factory,
ModuleProperties moduleProperties,
SparknginHttpConnectorServiceInfo serviceInfo) throws Exception {
this.loggerFactory = factory ;
logger = factory.getLogger(SparknginHttpConnectorService.class) ;
this.serviceInfo = serviceInfo ;
if(moduleProperties.isDataDrop()) cleanup() ;
}
public boolean cleanup() throws Exception {
sparkngin.cleanup() ;
logger.info("Clean queue data directory");
return true ;
}
public void start() throws Exception {
logger.info("Start start()");
logger.info("Properties:\n" + JSONSerializer.INSTANCE.toString(serviceInfo)) ;
server = new HttpServer() ;
server.setPort(serviceInfo.httpListenPort()) ;
server.setLoggerFactory(loggerFactory) ;
if(serviceInfo.wwwDir() != null) {
StaticFileHandler fileHandler = new StaticFileHandler(serviceInfo.wwwDir()) ;
fileHandler.setLogger(loggerFactory.getLogger(StaticFileHandler.class)) ;
server.setDefault(fileHandler) ;
}
server.add("/message/json", new JSONMessageRouteHandler(sparkngin));
server.add("/message/jbinary", new JBinaryMessageRouteHandler(sparkngin));
server.add("/tracker/:trackerName/:site", new TrackingPixelRouteHandler(sparkngin, serviceInfo.getProperties()));
server.startAsDeamon();
logger.info("Finish start()");
}
public void stop() {
logger.info("Start stop() hashcode = " + hashCode());
server.shutdown();
logger.info("Finish stop()");
}
}