summary refs log tree commit diff stats
path: root/tests/compile/tircbot.nim
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2012-09-21 20:39:47 +0100
committerDominik Picheta <dominikpicheta@googlemail.com>2012-09-21 20:39:47 +0100
commitbe1a709e7e0692fb8183cad4727529a41613eb06 (patch)
tree3c638d8210af3b4266434fc17ae04784d52a4215 /tests/compile/tircbot.nim
parente605b22ccfbb050c50354b648973a0ecf1fa4593 (diff)
downloadNim-be1a709e7e0692fb8183cad4727529a41613eb06.tar.gz
ftpclient fixed but causes an issue with the code generator and
therefore does not compile.

Asyncio: Added handleWrite event and an ability to wrap an already
initialised TSocket to a PAsyncSocket.
Fixed tircbot test.
Diffstat (limited to 'tests/compile/tircbot.nim')
-rw-r--r--tests/compile/tircbot.nim34
1 files changed, 18 insertions, 16 deletions
diff --git a/tests/compile/tircbot.nim b/tests/compile/tircbot.nim
index 91be18092..e538a7e57 100644
--- a/tests/compile/tircbot.nim
+++ b/tests/compile/tircbot.nim
@@ -32,12 +32,12 @@ proc open*(host = "localhost", port: TPort): TDb =
   result.r = redis.open(host, port)
   result.lastPing = epochTime()
 
-proc customHSet(database: TDb, name, field, value: string) =
+discard """proc customHSet(database: TDb, name, field, value: string) =
   if database.r.hSet(name, field, value).int == 0:
     if failOnExisting:
       assert(false)
     else:
-      echo("[Warning:REDIS] ", field, " already exists in ", name)
+      echo("[Warning:REDIS] ", field, " already exists in ", name)"""
 
 proc updateProperty*(database: TDb, commitHash, platform, property,
                     value: string) =
@@ -228,7 +228,7 @@ proc getSeen(d: TDb, nick: string, s: var TSeen): bool =
       of "newnick":
         s.newNick = value
 
-template createSeen(typ: TSeenType, n, c: string): stmt =
+template createSeen(typ: TSeenType, n, c: string): stmt {.immediate, dirty.} =
   var seenNick: TSeen
   seenNick.kind = typ
   seenNick.nick = n
@@ -275,12 +275,11 @@ proc handleWebMessage(state: PState, line: string) =
       state.ircClient[].privmsg(joinChans[0], message)
   elif json.existsKey("redisinfo"):
     assert json["redisinfo"].existsKey("port")
-    let redisPort = json["redisinfo"]["port"].num
+    #let redisPort = json["redisinfo"]["port"].num
     state.dbConnected = true
 
 proc hubConnect(state: PState)
-proc handleConnect(s: PAsyncSocket, userArg: PObject) =
-  let state = PState(userArg)
+proc handleConnect(s: PAsyncSocket, state: PState) =
   try:
     # Send greeting
     var obj = newJObject()
@@ -311,8 +310,7 @@ proc handleConnect(s: PAsyncSocket, userArg: PObject) =
     sleep(5000)
     state.hubConnect()
 
-proc handleRead(s: PAsyncSocket, userArg: PObject) =
-  let state = PState(userArg)
+proc handleRead(s: PAsyncSocket, state: PState) =
   var line = ""
   if state.sock.recvLine(line):
     if line != "":
@@ -329,14 +327,16 @@ proc handleRead(s: PAsyncSocket, userArg: PObject) =
 proc hubConnect(state: PState) =
   state.sock = AsyncSocket()
   state.sock.connect("127.0.0.1", state.hubPort)
-  state.sock.userArg = state
-  state.sock.handleConnect = handleConnect
-  state.sock.handleRead = handleRead
+  state.sock.handleConnect =
+    proc (s: PAsyncSocket) =
+      handleConnect(s, state)
+  state.sock.handleRead =
+    proc (s: PAsyncSocket) =
+      handleRead(s, state)
 
   state.dispatcher.register(state.sock)
 
-proc handleIrc(irc: var TAsyncIRC, event: TIRCEvent, userArg: PObject) =
-  let state = PState(userArg)
+proc handleIrc(irc: var TAsyncIRC, event: TIRCEvent, state: PState) =
   case event.typ
   of EvDisconnected:
     while not state.ircClient[].isConnected:
@@ -373,7 +373,7 @@ proc handleIrc(irc: var TAsyncIRC, event: TIRCEvent, userArg: PObject) =
           echo(nick)
           var seenInfo: TSeen
           if state.database.getSeen(nick, seenInfo):
-            var mSend = ""
+            #var mSend = ""
             case seenInfo.kind
             of PSeenMsg:
               pm("$1 was last seen on $2 in $3 saying: $4" %
@@ -431,10 +431,12 @@ proc open(port: TPort = TPort(5123)): PState =
   
   result.hubPort = port
   result.hubConnect()
-
+  let hirc =
+    proc (a: var TAsyncIRC, ev: TIRCEvent) =
+      handleIrc(a, ev, result)
   # Connect to the irc server.
   result.ircClient = AsyncIrc(ircServer, nick = botNickname, user = botNickname,
-                 joinChans = joinChans, ircEvent = handleIrc, userArg = result)
+                 joinChans = joinChans, ircEvent = hirc)
   result.ircClient.connect()
   result.dispatcher.register(result.ircClient)