added handlers for main server requests
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
import exceptions.RcControlException
|
import exceptions.RcControlException
|
||||||
import net.server.handlers.AbstractHandler
|
import net.server.handlers.AbstractHandler
|
||||||
import net.server.handlers.flash.LoadBin
|
import net.server.handlers.flash.LoadBin
|
||||||
|
import net.server.handlers.main.GetLocation
|
||||||
|
import net.server.handlers.main.SetRoute
|
||||||
import net.server.handlers.rc.Connect
|
import net.server.handlers.rc.Connect
|
||||||
import net.server.handlers.rc.Control
|
import net.server.handlers.rc.Control
|
||||||
import net.server.handlers.rc.Disconnect
|
import net.server.handlers.rc.Disconnect
|
||||||
@@ -22,6 +24,9 @@ fun main(args: Array<String>) {
|
|||||||
val rcSessionConstructor = protoBuf.loadProtoFile(getRelativePathToProto("rc_session.proto")).build("carkot")
|
val rcSessionConstructor = protoBuf.loadProtoFile(getRelativePathToProto("rc_session.proto")).build("carkot")
|
||||||
val carkotConstructor = protoBuf.loadProtoFile(getRelativePathToProto("carkot.proto")).build("carkot")
|
val carkotConstructor = protoBuf.loadProtoFile(getRelativePathToProto("carkot.proto")).build("carkot")
|
||||||
|
|
||||||
|
val routeConstructor = protoBuf.loadProtoFile(getRelativePathToProto("route.proto")).build("carkot")
|
||||||
|
val locationConstructor = protoBuf.loadProtoFile(getRelativePathToProto("location.proto")).build("carkot")
|
||||||
|
|
||||||
|
|
||||||
val handlers: MutableMap<String, AbstractHandler> = mutableMapOf()
|
val handlers: MutableMap<String, AbstractHandler> = mutableMapOf()
|
||||||
handlers.put("/rc/control", Control(controlConstructor.DirectionRequest, controlConstructor.DirectionResponse))
|
handlers.put("/rc/control", Control(controlConstructor.DirectionRequest, controlConstructor.DirectionResponse))
|
||||||
@@ -31,7 +36,8 @@ fun main(args: Array<String>) {
|
|||||||
|
|
||||||
handlers.put("/loadBin", LoadBin(carkotConstructor.Upload, carkotConstructor.UploadResult))
|
handlers.put("/loadBin", LoadBin(carkotConstructor.Upload, carkotConstructor.UploadResult))
|
||||||
|
|
||||||
//todo work with main server
|
handlers.put("/route", SetRoute(routeConstructor.RouteRequest, routeConstructor.RouteResponse))
|
||||||
|
handlers.put("/getLocation", GetLocation(null, locationConstructor.LocationResponse))
|
||||||
|
|
||||||
net.server.start(handlers, serverPort)
|
net.server.start(handlers, serverPort)
|
||||||
val udev = Udev()
|
val udev = Udev()
|
||||||
@@ -61,4 +67,9 @@ fun require(name: String): dynamic {
|
|||||||
@native
|
@native
|
||||||
fun setInterval(callBack: () -> Unit, ms: Int) {
|
fun setInterval(callBack: () -> Unit, ms: Int) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@native
|
||||||
|
fun setTimeout(callBack: () -> Unit, ms: Int) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -18,17 +18,16 @@ abstract class AbstractHandler(protoDecoder: dynamic, protoEncoder: dynamic) {
|
|||||||
|
|
||||||
fun execute(data: List<Byte>, response: dynamic) {
|
fun execute(data: List<Byte>, response: dynamic) {
|
||||||
|
|
||||||
|
|
||||||
val message = if (protoDecoder != null) protoDecoder.decode(data.toByteArray()) else null
|
val message = if (protoDecoder != null) protoDecoder.decode(data.toByteArray()) else null
|
||||||
val resultMessage: dynamic = {}
|
val resultMessage: dynamic = {}
|
||||||
js("resultMessage = {}")//todo bad?
|
js("resultMessage = {}")
|
||||||
val afterExecute: () -> Unit = {
|
val afterExecute: () -> Unit = {
|
||||||
if (this.protoEncoder != null) {
|
if (this.protoEncoder != null) {
|
||||||
val protoEn = this.protoEncoder//temporarily:)
|
val protoEn = this.protoEncoder//temporarily:)
|
||||||
val resultMsg = resultMessage
|
val resultMsg = resultMessage
|
||||||
val resultObject = js("new protoEn(resultMsg)")
|
val resultBuffer = js("new protoEn(resultMsg)").encode()
|
||||||
val resultBuffer = resultObject.encode()
|
val trimBuffer = trimBuffer(resultBuffer.buffer, resultBuffer.limit)
|
||||||
response.write(trimBuffer(resultBuffer.buffer, resultBuffer.limit))
|
response.write(trimBuffer)
|
||||||
}
|
}
|
||||||
response.end()
|
response.end()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package net.server.handlers.main
|
||||||
|
|
||||||
|
import net.server.handlers.AbstractHandler
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by user on 7/28/16.
|
||||||
|
*/
|
||||||
|
class GetLocation : AbstractHandler {
|
||||||
|
|
||||||
|
constructor(protoDecoder: dynamic, protoEncoder: dynamic) : super(protoDecoder, protoEncoder)
|
||||||
|
|
||||||
|
override fun makeResponse(message: dynamic, responseMessage: dynamic, finalCallback: () -> Unit) {
|
||||||
|
val car = MicroController.instance.car
|
||||||
|
val locationResponseData = {}
|
||||||
|
js("locationResponseData = {x:car.x, y:car.y, angle:car.angle}")
|
||||||
|
responseMessage.locationResponseData = locationResponseData
|
||||||
|
finalCallback.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package net.server.handlers.main
|
||||||
|
|
||||||
|
import net.server.handlers.AbstractHandler
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by user on 7/28/16.
|
||||||
|
*/
|
||||||
|
class SetRoute : AbstractHandler {
|
||||||
|
|
||||||
|
constructor(protoDecoder: dynamic, protoEncoder: dynamic) : super(protoDecoder, protoEncoder)
|
||||||
|
|
||||||
|
override fun makeResponse(message: dynamic, responseMessage: dynamic, finalCallback: () -> Unit) {
|
||||||
|
val car = MicroController.instance.car
|
||||||
|
|
||||||
|
car.routeExecutor.executeRoute(message)
|
||||||
|
|
||||||
|
responseMessage.code = 0
|
||||||
|
responseMessage.errorMsg = ""
|
||||||
|
|
||||||
|
finalCallback.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user