summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorSimon Hafner <hafnersimon@gmail.com>2015-04-26 08:37:55 +0500
committerSimon Hafner <hafnersimon@gmail.com>2015-04-26 08:37:55 +0500
commit58570a4a3086852acbd6ee059c9e3427f504b2ab (patch)
tree41a87e06e68422d393f4d4ea14e75e5f6764d015 /compiler
parent147037bd1eddc447341b079020080e61f5ba3385 (diff)
downloadNim-58570a4a3086852acbd6ee059c9e3427f504b2ab.tar.gz
epc request/response barebones
Diffstat (limited to 'compiler')
-rw-r--r--compiler/nimsuggest/nimsuggest.nim29
1 files changed, 19 insertions, 10 deletions
diff --git a/compiler/nimsuggest/nimsuggest.nim b/compiler/nimsuggest/nimsuggest.nim
index d6bd01ce7..886590e35 100644
--- a/compiler/nimsuggest/nimsuggest.nim
+++ b/compiler/nimsuggest/nimsuggest.nim
@@ -80,9 +80,20 @@ proc sexp(s: seq[Suggest]): SexpNode =
 proc listEPC(): SexpNode =
   discard
 
-proc executeEPC(body: SexpNode) =
+proc executeEPC(section: Section, args: SexpNode) =
+  let
+    file = args[0].getStr
+    line = args[1].getNum
+    column = args[2].getNum
+    dirtyfile = args[3].getStr(nil)
   discard
 
+proc returnEPC(socket: var Socket, uid: string, s: SexpNode) =
+  let response = $convertSexp([newSSymbol("return"), [uid, s]])
+  socket.send(toHex(len(response), 6))
+  socket.send(response)
+  socket.close()
+
 proc action(cmd: string) =
   template toggle(sw) =
     if sw in gGlobalOptions:
@@ -194,11 +205,12 @@ proc serve() =
       let body = message[1]
       case messageType:
       of "call":
-        executeEPC(body)
-        let response = $sexp(results)
-        client.send(toHex(len(response), 6))
-        client.send(response)
-        client.close()
+        let
+          uid = body[0].getStr
+          section = parseEnum[Section](body[1].getStr)
+          args = body[2]
+        executeEPC(section, args)
+        returnEPC(client, uid, sexp(results))
       of "return":
         raise newException(ValueError, "no return expected")
       of "return-error":
@@ -207,10 +219,7 @@ proc serve() =
         stderr.writeln("recieved epc error: " & $messageBuffer)
         raise newException(ValueError, "epc error")
       of "methods":
-        let response = $listEPC()
-        client.send(toHex(len(response), 6))
-        client.send(response)
-        client.close()
+        returnEPC(client, body[0].getStr, listEPC())
       else:
         raise newException(ValueError, "unexpected call: " & messageType)