Android Open Source - rcdroid Web Controller






From Project

Back to project page rcdroid.

License

The source code is released under:

Copyright (c) 2013, Jamie Furness (jamie@jamierf.co.uk) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following...

If you think the Android project rcdroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.jamierf.rcdroid.http;
//w ww.  ja  v  a  2 s  .c  o  m
import android.content.res.AssetManager;
import com.google.common.collect.Lists;
import com.jamierf.rcdroid.config.WebUIConfig;
import com.jamierf.rcdroid.http.handler.AssetResourceHandler;
import com.jamierf.rcdroid.http.handler.ControlProtocolHandler;
import com.jamierf.rcdroid.http.handler.JsonPOJOHandler;
import com.jamierf.rcdroid.http.listener.ClientListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.webbitserver.WebServer;
import org.webbitserver.WebServers;
import org.webbitserver.WebSocketConnection;

import java.util.Collection;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class WebController extends ControlProtocolHandler {

    private static final Logger LOG = LoggerFactory.getLogger(WebController.class);

    private final ExecutorService executor;
    private final WebServer server;
    private final Collection<ClientListener> listeners;

    public WebController(final AssetManager assets, final WebUIConfig config) throws ExecutionException, InterruptedException {
        executor = Executors.newSingleThreadExecutor();
        server = executor.submit(new Callable<WebServer>() {
            @Override
            public WebServer call() throws Exception {
                return WebServers.createWebServer(config.getPort())
                        .add("/control", WebController.this)
                        .add("/config", new JsonPOJOHandler(config))
                        .add(new AssetResourceHandler(assets))
                        .start().get();
            }
        }).get();

        listeners = Lists.newLinkedList();
    }

    public void addListener(ClientListener listener) {
        synchronized (listeners) {
            listeners.add(listener);
        }
    }

    public void removeListener(ClientListener listener) {
        synchronized (listeners) {
            listeners.remove(listener);
        }
    }

    public void stop() {
        server.stop();
    }

    @Override
    protected void onConnect(final WebSocketConnection client) {
        LOG.info("Connected to client: {}", client);

        synchronized (listeners) {
            for (ClientListener listener : listeners) {
                listener.onClientConnect(client);
            }
        }
    }

    @Override
    protected void onPacket(WebSocketConnection client, Packet packet) {
        synchronized (listeners) {
            for (ClientListener listener : listeners) {
                listener.onPacket(client, packet);
            }
        }
    }
}




Java Source Code List

com.jamierf.rcdroid.CarActivity.java
com.jamierf.rcdroid.CarService.java
com.jamierf.rcdroid.config.CarConfig.java
com.jamierf.rcdroid.config.ServoConfig.java
com.jamierf.rcdroid.config.WebUIConfig.java
com.jamierf.rcdroid.http.Packet.java
com.jamierf.rcdroid.http.WebController.java
com.jamierf.rcdroid.http.handler.AssetResourceHandler.java
com.jamierf.rcdroid.http.handler.ControlProtocolHandler.java
com.jamierf.rcdroid.http.handler.JsonPOJOHandler.java
com.jamierf.rcdroid.http.listener.ClientListener.java
com.jamierf.rcdroid.http.listener.PacketListener.java
com.jamierf.rcdroid.input.SensorController.java
com.jamierf.rcdroid.input.api.BatteryStatus.java
com.jamierf.rcdroid.input.api.Coordinate.java
com.jamierf.rcdroid.input.sensor.AbstractSensor.java
com.jamierf.rcdroid.input.sensor.AccelerationSensor.java
com.jamierf.rcdroid.input.sensor.BatterySensor.java
com.jamierf.rcdroid.input.sensor.LocationSensor.java
com.jamierf.rcdroid.input.sensor.RotationSensor.java
com.jamierf.rcdroid.input.sensor.listener.SensorListener.java
com.jamierf.rcdroid.logic.CarEngine.java
com.jamierf.rcdroid.logic.packets.AbstractServoHandler.java
com.jamierf.rcdroid.logic.packets.PlayAlarmRequestHandler.java
com.jamierf.rcdroid.logic.packets.SetRotationRequestHandler.java
com.jamierf.rcdroid.logic.packets.SetSpeedRequestHandler.java
com.jamierf.rcdroid.logic.sensors.AccelerationSensorHandler.java
com.jamierf.rcdroid.logic.sensors.BatterySensorHandler.java
com.jamierf.rcdroid.logic.sensors.LocationSensorHandler.java
com.jamierf.rcdroid.logic.sensors.RotationSensorHandler.java