Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

68
LINES

< > TinyBrain | #1002017 - Eleutheria Main, including Slack Bot (LIVE)

JavaX source code [tags: use-pretranspiled] - run with: x30.jar

Libraryless. Click here for Pure Java version (12502L/95K/273K).

!759

!include once #1002615 // master()

// Options for smaller heap with limit to allow other VMs to start on 1GB machine. Also, headless to allow image rendering on server.
static S vmArgs = "-Xmx256m -XX:MaxHeapFreeRatio=30 -XX:MinHeapFreeRatio=10 -XX:+UseG1GC -Djava.awt.headless=true";

// Options for smaller heap
//static S vmArgs = "-XX:MaxHeapFreeRatio=30 -XX:MinHeapFreeRatio=10 -XX:+UseG1GC";

// Options for max speed & reactivity - some claim this might cause problems (https://developer.jboss.org/thread/228920?start=75&tstart=0)
//static S vmArgs = "-server -XX:+TieredCompilation";

// Options for max longterm throughput
//static S vmArgs = "-server";

// Homepage, Talk to Eleu, Web Auth, Cookies
static L<S> seedBots = litlist("#1003253", "#1002213", "#1002590", "#1002157");

sbool doSlack = false;

!include #1002268 // Slack Bot
!include #1002576 // Web Serving
!include #1002578 // Eleu Core

static boolean actuallyPost = true;
static S botUserName = "eleu_learns_to_think";
static L<S> actualBotUserNames = litlist("eleu", "connector");

static int webServerPort = 80; // set to 0 for no web serving
static int httpsPort = 443; // set to 0 for no https serving

p {
  becomeBotVMIfFirst();
  webInit();
  
  if (webServerPort != 0) pcall {
    //serveHttp(webServerPort);
    serveHttpWithWebsockets(webServerPort, func(NanoHTTPD.IHTTPSession handshake) {
      ret new WebSocket(handshake) {
        protected void onPong(WebSocketFrame pongFrame) { print("websocket pong"); }
        protected void onMessage(WebSocketFrame messageFrame) { print("websocket msg: " + messageFrame.getTextPayload()); }
        protected void onClose(WebSocketFrame.CloseCode code, String reason, boolean initiatedByRemote) { print("websocket close"); }
        protected void onException(IOException e) { printStackTrace(e); }
      };
    });
  }
  
  if (httpsPort != 0) pcall {
    File keystore = secretProgramFile(programID(), "keystore.jks");
    S pass = loadSecretTextFileMandatory("keystore-pass").trim();
    serveHttps(httpsPort, keystore, pass);
  }
  
  if (doSlack)
    initSlackBot();
  dediSay("Booting...");
  coreInit();
  
  for (S id : seedBots)
    call(getDispatcher(), "addSeedBot", id);
    
  dediSay("Yo, back online!");
  if (doSlack)
    slackBotLoop();
}

Author comment

Began life as a copy of #1001915

download  show line numbers  debug dex   

Travelled to 6 computer(s): cfunsshuasjs, gwrvuhgaqvyk, jtubtzbbkimh, mqqgnosmbjvj, onxytkatvevr, tvejysmllsmz

No comments. add comment

Snippet ID: #1002017
Snippet name: Eleutheria Main, including Slack Bot (LIVE)
Eternal ID of this version: #1002017/5
Text MD5: f64d18eb6efcb87b9401c2ee9cf19330
Transpilation MD5: c3460b2892ce944fd3fa315424e4890d
Author: stefan
Category:
Type: JavaX source code
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2018-01-03 03:56:29
Source code size: 2361 bytes / 68 lines
Pitched / IR pitched: No / No
Views / Downloads: 1327 / 6057
Version history: 4 change(s)
Referenced in: [show]