Mercurial > hg > Members > tatsuki > bbs
view src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/network/codesegment/StartBBSCodeSegment.java @ 9:2890ae6b1aef
network browsing
author | tatsuki |
---|---|
date | Fri, 03 Feb 2017 02:16:51 +0900 |
parents | 766f7668521f |
children |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.bbs.network.codesegment; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; import jp.ac.u_ryukyu.ie.cr.bbs.local.bbs.FindNodeServlet; import jp.ac.u_ryukyu.ie.cr.bbs.local.browsing.*; import jp.ac.u_ryukyu.ie.cr.bbs.network.bbs.NetworkBulletinBoard; import jp.ac.u_ryukyu.ie.cr.bbs.network.bbs.NetworkJungleBulletinBoard; import jp.ac.u_ryukyu.ie.cr.bbs.network.bbs.RequestNumCheckServlet; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletHandler; import org.eclipse.jetty.servlet.ServletHolder; import javax.servlet.Servlet; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StartBBSCodeSegment extends CodeSegment { int bbsPort = 8080; Receiver host = ids.create(CommandType.PEEK); private Pattern pattern = Pattern.compile("^(node|cli)([0-9]+)$"); private String[] args; boolean persistentFlag = false; public StartBBSCodeSegment(String[] _args, int p) { args = _args; bbsPort = p; host.setKey("host"); } public StartBBSCodeSegment() { args = null; host.setKey("host"); } @Override public void run() { String name = host.asString(); Matcher matcher = pattern.matcher(name); matcher.find(); // String type = matcher.group(1); for(String arg: args) if (arg.equals("-persistent")) { persistentFlag = true; } NetworkBulletinBoard cassaBBS = null; if(persistentFlag) { System.out.println("log loading..."); cassaBBS = NetworkJungleBulletinBoard.NewPersistentJungle(name); cassaBBS.init(); } else { cassaBBS = new NetworkJungleBulletinBoard(name); cassaBBS.init(); } System.out.println("StartBBSCodeSegment"); System.out.println("name : "+ name); /* Jetty registration */ String createBoardMessagePath = "/createBoardMessage"; String createBoardPath = "/createBoard"; String editMessagePath = "/editMessage"; String showBoardMessagePath = "/showBoardMessage"; String createChildPath = "/createChildMessage"; String findNodeMessagePath = "/findNode"; Servlet createBoardMessage = new CreateBoardMessageServlet(cassaBBS); Servlet createBoard = new CreateBoardServlet(cassaBBS); Servlet createChild = new CreateChildServlet(cassaBBS); Servlet editBoardMessage = new EditMessageServlet(cassaBBS); Servlet index = new ShowBoardsServlet(cassaBBS, createBoardPath, showBoardMessagePath, findNodeMessagePath); Servlet find = new FindNodeServlet(cassaBBS, showBoardMessagePath); Servlet board = new ShowBoardMessageServlet(cassaBBS, createBoardMessagePath, createChildPath, editMessagePath, showBoardMessagePath); Server serv = new Server(bbsPort ); ServletHandler context = new ServletHandler(); context.addServletWithMapping(new ServletHolder(find), findNodeMessagePath); context.addServletWithMapping(new ServletHolder(createBoardMessage), createBoardMessagePath); context.addServletWithMapping(new ServletHolder(createBoard), createBoardPath); context.addServletWithMapping(new ServletHolder(createChild), createChildPath); context.addServletWithMapping(new ServletHolder(editBoardMessage), editMessagePath); context.addServletWithMapping(new ServletHolder(index), "/"); context.addServletWithMapping(new ServletHolder(board), showBoardMessagePath); serv.setHandler(context); //リクエストのカウントcheckに使う? 測定用 String requestNumCheckPath = "/requestNum"; Servlet requestNumCheckServlet = new RequestNumCheckServlet(cassaBBS); context.addServletWithMapping(new ServletHolder(requestNumCheckServlet), requestNumCheckPath); serv.setHandler(context); try { serv.start(); } catch (Exception e) { } new LogUpdateCodeSegment(); } }