Commits

Martin Gergov committed 3b14ce9 Merge

Merge with fix...

Comments (0)

Files changed (11)

 
 #) More options related purely to udt should be included.(e.g. controlling
    socket creation, buffers, timeouts)
+
+#) UDT does not provide separate error events, instead these will be catched
+   on an attempt read or write. This means that connectionLost will NOT be
+   called as soon as the connection is lost for example.
+
+#) It is highly recommended to use the latest revision at the udt-git repo
+   https://sourceforge.net/p/udt/git/ (if it doesn't break
+   compatibility with PyUDT).
 import random
 from time import sleep
 
-ok = True
+ok = False
 startup()
 poller = UDTepoll()
 s = UdtSocket(AF_INET, SOCK_DGRAM, AI_PASSIVE)
+s.setblocking(False)
+s.bind(("127.0.0.1", 5001))
+s.listen(20)
 print s.UDTSOCKET
-s.setblocking(True)
-s.bind(("127.0.0.1", 5000))
-# poller.add_usock(s.UDTSOCKET, UDT_EPOLL_IN)
-s.listen(20)
+counter = 0
+poller.add_usock(s.UDTSOCKET, UDT_EPOLL_IN)
+
+# try:
+#     while 1:
+#         sock, addr = s.accept()
+#         sleep(20)
+        
+# except KeyboardInterrupt:
+#     exit("Bye!")
 
 try:
-    while 1:
-        sock, addr = s.accept()
-        sleep(20)
-        
+    while True:
+        print "---------------------------------------------"
+        sets = [[], []]
+        try:
+            sets = poller.wait(True, True, 1000, False, False)
+        except UDTException as ue:
+            if ue[0] == 6003:
+                pass
+        print sets
+
+        for socket in sets[0]:
+            if (socket.UDTSOCKET == s.UDTSOCKET.UDTSOCKET):
+                sock, host = accept(socket)
+                print sock, host
+                sock = UdtSocket(_sock=sock)
+                sock.setblocking(False)
+                poller.add_usock(sock.UDTSOCKET, UDT_EPOLL_IN)
+            else:
+                try:
+                    mess = recvmsg(socket, 100)
+                    print "READ:", socket,";", "RECV:", mess
+                    if counter < 100:
+                        poller.add_usock(socket , UDT_EPOLL_OUT)
+                    #sendmsg(socket.UDTSOCKET, mess, len(mess))
+                except udt4.UDTException as ue:
+                    print "ERR:",ue
+                    if ue[0] == 6002:
+                        poller.remove_usock(socket)
+                        poller.add_usock(socket, UDT_EPOLL_IN)
+                        pass
+            gc.collect()
+
+        for socket in sets[1]:
+            if sock.UDTSOCKET.UDTSOCKET == socket.UDTSOCKET:
+                mess = "HELLO!"
+                mess = sendmsg(socket, mess, len(mess))
+                poller.remove_usock(socket)
+                poller.add_usock(socket, UDT_EPOLL_IN)
+
+                counter += 1
+
+            gc.collect()
 except KeyboardInterrupt:
+    poller.remove_usock(s.UDTSOCKET)
+    sock.close()
+    s.close()
+    cleanup()
     exit("Bye!")
 
-# try:
-#     while True:
-#         #sets = poller.wait(True, True, 1000, False, False)
-#         #print sets
-        
-#         # for socket in sets[0]:
-#         #     if (socket.UDTSOCKET == s.UDTSOCKET.UDTSOCKET):
-#         #         sock, host = accept(socket)
-#         #         print sock, host
-#         #         sock = UdtSocket(_sock=sock)
-#         #         sock.setblocking(False)
-#         #         poller.add_usock(sock.UDTSOCKET, UDT_EPOLL_IN)
-#         #         #sendmsg(sock.UDTSOCKET, "Hello", 5)
-#         #     else:
-                
-#         #         try:
-#         #             mess = recvmsg(socket.UDTSOCKET, 100)
-#         #             print "READ:", socket,";", "RECV:", mess
-#         #             #sendmsg(socket.UDTSOCKET, mess, len(mess))
-#         #         except udt4.UDTException as ue:
-#         #             print "ERR:",ue
-#         #             poller.remove_usock(socket, UDT_EPOLL_IN)
-#         #             if ue[0] == 6002:
-#         #                 poller.add_usock(socket, UDT_EPOLL_IN)
-#         #     gc.collect()
-                    
-# except KeyboardInterrupt:
-#     exit("Bye!")
-poller.remove_usock(s.UDTSOCKET)
-
-cleanup()

examples/calls

-4
-ADDING S: 4 With flags: 1
-2013-01-22 17:58:08+0200 [-] Log opened.
-2013-01-22 17:58:08+0200 [-] ADDING S: 6 With flags: 1
-2013-01-22 17:58:09+0200 [-] Hello!
-2013-01-22 17:58:09+0200 [-] 1
-2013-01-22 17:58:09+0200 [-] 2
-2013-01-22 17:58:09+0200 [-] Echo starting on 5000
-2013-01-22 17:58:09+0200 [-] Starting protocol <__main__.Echo instance at 0x21f7680>
-2013-01-22 17:58:09+0200 [-] CLIENT!!!
-2013-01-22 17:58:09+0200 [-] ADDING U: <UDTSOCKET object at 0x217bdc8> With flags: 1
-2013-01-22 17:58:09+0200 [-] 5
-2013-01-22 17:58:09+0200 [-] 3
-2013-01-22 17:58:09+0200 [-] <__main__.Echo on 5000>
-2013-01-22 17:58:13+0200 [-] Received SIGINT, shutting down.
-2013-01-22 17:58:13+0200 [-] FD: 4 SELECT: <twisted.internet.posixbase._UnixWaker object at 0x21f3f50>
-2013-01-22 17:58:13+0200 [-] FD: 6 SELECT: <twisted.internet.posixbase._SIGCHLDWaker object at 0x21f90d0>
-2013-01-22 17:58:13+0200 [-] REMOVING: <UDTSOCKET object at 0x217bdc8> With flags: 1
-2013-01-22 17:58:13+0200 [Echo (UDP)] (UDP Port 5000 Closed)
-2013-01-22 17:58:13+0200 [Echo (UDP)] Stopping protocol <__main__.Echo instance at 0x21f7680>
-2013-01-22 17:58:13+0200 [-] Main loop terminated.
-2013-01-22 17:58:13+0200 [-]          3702849 function calls (3701369 primitive calls) in 5.053 seconds
-2013-01-22 17:58:13+0200 [-] 
-2013-01-22 17:58:13+0200 [-]    Ordered by: standard name
-2013-01-22 17:58:13+0200 [-] 
-2013-01-22 17:58:13+0200 [-]    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(ArgInfo)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(ArgSpec)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(Arguments)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(Attribute)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(ModuleInfo)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(ParseResult)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(SplitResult)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 <string>:1(Traceback)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 DLFCN.py:2(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 Queue.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 Queue.py:13(Empty)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 Queue.py:17(Full)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 Queue.py:21(Queue)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 Queue.py:212(PriorityQueue)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 Queue.py:231(LifoQueue)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 UserDict.py:4(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __future__.py:48(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __future__.py:74(_Feature)
-2013-01-22 17:58:13+0200 [-]         7    0.000    0.000    0.000    0.000 __future__.py:75(__init__)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 __init__.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:10(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:1093(Logger)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:11(_checkRequirements)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:1108(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:12(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:1368(RootLogger)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:1374(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:1382(LoggerAdapter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:1670(NullHandler)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:182(_checkLevel)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.034    0.034 __init__.py:2(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:230(LogRecord)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.001    0.001 __init__.py:24(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.102    0.102    0.103    0.103 __init__.py:34(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:346(Formatter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:390(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:44(IDummy)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:46(Dummy)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:494(BufferingFormatter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.003    0.003 __init__.py:52(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:536(Filter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:573(Filterer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:578(__init__)
-2013-01-22 17:58:13+0200 [-]         2    0.001    0.001    0.001    0.001 __init__.py:6(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:645(Handler)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:809(StreamHandler)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:880(FileHandler)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.004    0.002 __init__.py:9(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:944(PlaceHolder)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:991(Manager)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 __init__.py:996(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _baseprocess.py:19(BaseProcess)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.002    0.002 _baseprocess.py:8(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.007    0.007 _newtls.py:11(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _newtls.py:162(ConnectionMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _newtls.py:24(_BypassTLS)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _newtls.py:249(ClientMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _newtls.py:262(ServerMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _reflectpy3.py:102(_NoModuleFound)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _reflectpy3.py:108(InvalidName)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _reflectpy3.py:114(ModuleNotFound)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _reflectpy3.py:121(ObjectNotFound)
-2013-01-22 17:58:13+0200 [-]        30    0.000    0.000    0.000    0.000 _reflectpy3.py:263(qual)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 _reflectpy3.py:289(_safeFormat)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 _reflectpy3.py:316(safe_str)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _reflectpy3.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _signals.py:33(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _signals.py:40(installHandler)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _utilpy3.py:129(FancyStrMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _utilpy3.py:15(FancyEqMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _utilpy3.py:214(InsensitiveDict)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _utilpy3.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]        39    0.000    0.000    0.000    0.000 _utilpy3.py:80(untilConcludes)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 _version.py:2(<module>)
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 _weakrefset.py:16(__init__)
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 _weakrefset.py:20(__enter__)
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 _weakrefset.py:26(__exit__)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 _weakrefset.py:36(__init__)
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 _weakrefset.py:52(_commit_removals)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 _weakrefset.py:58(__iter__)
-2013-01-22 17:58:13+0200 [-]         9    0.000    0.000    0.000    0.000 _weakrefset.py:68(__contains__)
-2013-01-22 17:58:13+0200 [-]        16    0.000    0.000    0.000    0.000 _weakrefset.py:81(add)
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 abc.py:105(register)
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 abc.py:148(__subclasscheck__)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 abc.py:86(__new__)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 abc.py:89(<genexpr>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:125(_LogOwner)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 abstract.py:133(_getLogPrefix)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:156(FileDescriptor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:178(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:186(connectionLost)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:34(_ConsumerMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:410(stopReading)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:418(stopWriting)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 abstract.py:426(startReading)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 abstract.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 adapter.py:132(registered)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:17(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:23(BaseAdapterRegistry)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:297(LookupBasePy)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:34(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:400(VerifyingBasePy)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:434(AdapterLookupBase)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:436(__init__)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 adapter.py:442(changed)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:473(init_extendors)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 adapter.py:478(add_extendor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:594(AdapterLookup)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:597(AdapterRegistry)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:601(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:615(_setBases)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 adapter.py:626(changed)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:633(VerifyingAdapterLookup)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:636(VerifyingAdapterRegistry)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 adapter.py:640(_convert_None_to_Interface)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 adapter.py:646(_normalize_name)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:81(_setBases)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:86(<lambda>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:87(<lambda>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 adapter.py:90(_createLookup)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 adapter.py:95(changed)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 adapter.py:99(register)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 address.py:134(_ServerFactoryIPv4Address)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 address.py:18(_IPAddress)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 address.py:54(IPv4Address)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 address.py:6(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 address.py:72(IPv6Address)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 address.py:83(UNIXAddress)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.001    0.000 advice.py:117(advise)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 advice.py:156(determineMetaclass)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 advice.py:185(minimalBases)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 advice.py:28(<module>)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 advice.py:39(getFrameInfo)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 advice.py:75(addClassAdvisor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 atexit.py:37(register)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 atexit.py:6(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:1079(BasePort)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:1102(_SignalReactorMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:1120(_handleSignals)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 base.py:1141(startRunning)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:1155(_reallyStartRunning)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    4.866    4.866 base.py:1171(run)
-2013-01-22 17:58:13+0200 [-]         1    0.329    0.329    4.865    4.865 base.py:1176(mainLoop)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 base.py:141(activate_delay)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:165(__lt__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:214(ThreadedResolver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:227(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:282(BlockingResolver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:296(_ThreePhaseEvent)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 base.py:325(__init__)
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.000    0.000 base.py:332(addTrigger)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:35(DelayedCall)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.083    0.042 base.py:401(fireEvent)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.083    0.041 base.py:421(_continueFiring)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 base.py:43(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:437(ReactorBase)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:476(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:516(wakeUp)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:576(stop)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:588(crash)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:601(sigInt)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:619(disconnectAll)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.083    0.042 base.py:636(fireSystemEvent)
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.000    0.000 base.py:644(addSystemEventTrigger)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 base.py:670(startRunning)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:693(_reallyStartRunning)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.002    0.002 base.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 base.py:704(callLater)
-2013-01-22 17:58:13+0200 [-]    660032    0.200    0.000    0.200    0.000 base.py:748(_insertNewDelayedCalls)
-2013-01-22 17:58:13+0200 [-]    330016    0.291    0.000    0.481    0.000 base.py:757(timeout)
-2013-01-22 17:58:13+0200 [-]    330016    0.314    0.000    0.542    0.000 base.py:767(runUntilCurrent)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:916(_initThreads)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:920(callFromThread)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 base.py:996(BaseConnector)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 bisect.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 collections.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 collections.py:25(OrderedDict)
-2013-01-22 17:58:13+0200 [-]         8    0.003    0.000    0.003    0.000 collections.py:287(namedtuple)
-2013-01-22 17:58:13+0200 [-]       343    0.000    0.000    0.000    0.000 collections.py:328(<genexpr>)
-2013-01-22 17:58:13+0200 [-]        43    0.000    0.000    0.000    0.000 collections.py:352(<genexpr>)
-2013-01-22 17:58:13+0200 [-]        43    0.000    0.000    0.000    0.000 collections.py:354(<genexpr>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 collections.py:386(Counter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.003    0.003 compat.py:19(<module>)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 compat.py:196(comparable)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 components.py:107(_addHook)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 components.py:149(Adapter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 components.py:192(Componentized)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 components.py:29(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 components.py:312(ReprableComponentized)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 components.py:360(_ProxiedClassMethod)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 components.py:392(_ProxyDescriptor)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 components.py:60(_registered)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 components.py:68(registerAdapter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 context.py:106(ThreadedContextTracker)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 context.py:107(__init__)
-2013-01-22 17:58:13+0200 [-]        25    0.000    0.000    0.000    0.000 context.py:110(currentContext)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 context.py:117(callWithContext)
-2013-01-22 17:58:13+0200 [-]        22    0.000    0.000    0.000    0.000 context.py:120(getContext)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 context.py:124(installContextTracker)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 context.py:13(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 context.py:23(ContextTracker)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 context.py:57(__init__)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 context.py:61(callWithContext)
-2013-01-22 17:58:13+0200 [-]        22    0.000    0.000    0.000    0.000 context.py:86(getContext)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 copy_reg.py:14(pickle)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 copy_reg.py:27(constructor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:1004(ClassProvides)
-2013-01-22 17:58:13+0200 [-]        56    0.000    0.000    0.003    0.000 declarations.py:1028(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:1138(provider)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:1148(moduleProvides)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:1323(ObjectSpecificationDescriptorPy)
-2013-01-22 17:58:13+0200 [-]   350/164    0.000    0.000    0.001    0.000 declarations.py:1366(_normalizeargs)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:232(Implements)
-2013-01-22 17:58:13+0200 [-]     62/39    0.001    0.000    0.007    0.000 declarations.py:248(implementedByFallback)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:28(<module>)
-2013-01-22 17:58:13+0200 [-]        43    0.000    0.000    0.010    0.000 declarations.py:408(classImplements)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:41(Declaration)
-2013-01-22 17:58:13+0200 [-]       120    0.000    0.000    0.006    0.000 declarations.py:44(__init__)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.001    0.000 declarations.py:468(_implements_advice)
-2013-01-22 17:58:13+0200 [-]   164/163    0.001    0.000    0.006    0.000 declarations.py:47(changed)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:475(implementer)
-2013-01-22 17:58:13+0200 [-]        32    0.000    0.000    0.000    0.000 declarations.py:477(__init__)
-2013-01-22 17:58:13+0200 [-]        32    0.000    0.000    0.008    0.000 declarations.py:480(__call__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:492(implementer_only)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 declarations.py:509(_implements)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 declarations.py:526(implements)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:650(Provides)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:656(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:699(Provides)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 declarations.py:978(ClassProvidesBasePy)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1029(_DefGen_Return)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1220(_ConcurrencyPrimitive)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1263(DeferredLock)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1326(DeferredSemaphore)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1395(QueueOverflow)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1400(QueueUnderflow)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1405(DeferredQueue)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1484(AlreadyTryingToLockError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:1492(DeferredFilesystemLock)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:17(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:185(Deferred)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 defer.py:245(__init__)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.083    0.021 defer.py:276(addCallbacks)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.083    0.021 defer.py:298(addCallback)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:34(AlreadyCalledError)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.003    0.001 defer.py:359(callback)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:38(CancelledError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:44(TimeoutError)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.003    0.001 defer.py:472(_startRunCallbacks)
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.086    0.017 defer.py:501(_runCallbacks)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:647(DebugInfo)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:683(FirstError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:735(DeferredList)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 defer.py:759(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 defer.py:883(waitForDeferred)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 dep_util.py:5(<module>)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 deprecate.py:103(_getReplacementString)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:119(_getDeprecationDocstring)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:140(_getDeprecationWarningString)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:177(getDeprecationWarningString)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:213(_appendToDocstring)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:240(deprecated)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:258(deprecationDecorator)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 deprecate.py:302(_InternalState)
-2013-01-22 17:58:13+0200 [-]        18    0.000    0.000    0.000    0.000 deprecate.py:310(__init__)
-2013-01-22 17:58:13+0200 [-]        48    0.000    0.000    0.000    0.000 deprecate.py:314(__getattribute__)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 deprecate.py:319(__setattr__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 deprecate.py:325(_ModuleProxy)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:352(__init__)
-2013-01-22 17:58:13+0200 [-]        16    0.000    0.000    0.000    0.000 deprecate.py:377(__getattribute__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 deprecate.py:408(_DeprecatedAttribute)
-2013-01-22 17:58:13+0200 [-]         7    0.000    0.000    0.000    0.000 deprecate.py:428(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 deprecate.py:45(<module>)
-2013-01-22 17:58:13+0200 [-]         7    0.000    0.000    0.000    0.000 deprecate.py:455(_deprecateAttribute)
-2013-01-22 17:58:13+0200 [-]         7    0.000    0.000    0.000    0.000 deprecate.py:481(deprecatedModuleAttribute)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 deprecate.py:70(_fullyQualifiedName)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 dis.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 epollreactor.py:12(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 epollreactor.py:144(removeAll)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 epollreactor.py:171(EPollReactor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 epollreactor.py:332(removeAll)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 epollreactor.py:38(_ContinuousPolling)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 epollreactor.py:69(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:107(ConnectBindError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:112(UnknownHostError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:117(NoRouteError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:122(ConnectionRefusedError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:127(TCPTimedOutError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:132(BadFileError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:137(ServiceNameUnknownError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:142(UserError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:147(TimeoutError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:152(SSLError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:157(VerifyError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:163(PeerVerifyError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:169(CertificateError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:17(BindError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:212(ConnectionClosed)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:219(ConnectionLost)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:231(ConnectionAborted)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:241(ConnectionDone)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:253(FileDescriptorOverrun)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:266(ConnectionFdescWentAway)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:271(AlreadyCalled)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:283(AlreadyCancelled)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:29(CannotListenError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:295(PotentialZombieWarning)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:318(ProcessDone)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:329(ProcessTerminated)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:343(ProcessExitedAlready)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:351(NotConnectingError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:363(NotListeningError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:375(ReactorNotRunning)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:381(ReactorNotRestartable)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:388(ReactorAlreadyRunning)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:394(ReactorAlreadyInstalledError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:401(ConnectingCancelledError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:420(UnsupportedAddressFamily)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:428(UnsupportedSocketType)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:435(AlreadyListened)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:52(MulticastJoinError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:59(MessageLengthError)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.001    0.001 error.py:6(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:71(DNSLookupError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:83(ConnectInProgressError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 error.py:89(ConnectError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:13(DistutilsError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:16(DistutilsModuleError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:20(DistutilsClassError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:26(DistutilsGetoptError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:29(DistutilsArgError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:33(DistutilsFileError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:38(DistutilsOptionError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:46(DistutilsSetupError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:50(DistutilsPlatformError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:55(DistutilsExecError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:59(DistutilsInternalError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:63(DistutilsTemplateError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:66(DistutilsByteCompileError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:70(CCompilerError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:73(PreprocessError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:76(CompileError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:79(LibError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:83(LinkError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:87(UnknownFileError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 errors.py:9(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 exceptions.py:17(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 exceptions.py:19(Invalid)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 exceptions.py:23(DoesNotImplement)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 exceptions.py:33(BrokenImplementation)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 exceptions.py:47(BrokenMethodImplementation)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 exceptions.py:60(InvalidInterface)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 exceptions.py:64(BadImplements)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:115(_Frame)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.014    0.014 failure.py:12(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:136(_Code)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:145(Failure)
-2013-01-22 17:58:13+0200 [-]         6    0.000    0.000    0.000    0.000 failure.py:172(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:29(DefaultException)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:456(__getstate__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:489(cleanFailure)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:82(NoCurrentExceptionError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 failure.py:89(_Traceback)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 fdesc.py:21(setNonBlocking)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 fdesc.py:44(_setCloseOnExec)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 fdesc.py:62(readFromFD)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 fdesc.py:8(<module>)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 functools.py:17(update_wrapper)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 functools.py:39(wraps)
-2013-01-22 17:58:13+0200 [-]        98    0.000    0.000    0.001    0.000 genericpath.py:15(exists)
-2013-01-22 17:58:13+0200 [-]       196    0.000    0.000    0.001    0.000 genericpath.py:38(isdir)
-2013-01-22 17:58:13+0200 [-]       166    0.000    0.000    0.000    0.000 genericpath.py:85(_splitext)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 hashlib.py:55(<module>)
-2013-01-22 17:58:13+0200 [-]         6    0.000    0.000    0.000    0.000 hashlib.py:94(__get_openssl_constructor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 heapq.py:31(<module>)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 inspect.py:142(isfunction)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.013    0.013 inspect.py:25(<module>)
-2013-01-22 17:58:13+0200 [-]         6    0.000    0.000    0.000    0.000 inspect.py:340(getmro)
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 inspect.py:59(isclass)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 inspect.py:630(EndOfBlock)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 inspect.py:632(BlockFinder)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 interface.py:15(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:169(InterfaceBasePy)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:217(Specification)
-2013-01-22 17:58:13+0200 [-]       184    0.001    0.000    0.008    0.000 interface.py:262(__init__)
-2013-01-22 17:58:13+0200 [-]       334    0.000    0.000    0.002    0.000 interface.py:267(subscribe)
-2013-01-22 17:58:13+0200 [-]        84    0.000    0.000    0.000    0.000 interface.py:270(unsubscribe)
-2013-01-22 17:58:13+0200 [-]       227    0.001    0.000    0.010    0.000 interface.py:279(__setBases)
-2013-01-22 17:58:13+0200 [-]      1638    0.001    0.000    0.001    0.000 interface.py:293(<lambda>)
-2013-01-22 17:58:13+0200 [-]   228/227    0.002    0.000    0.006    0.000 interface.py:297(changed)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:428(InterfaceClass)
-2013-01-22 17:58:13+0200 [-]        64    0.001    0.000    0.004    0.000 interface.py:436(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:48(Element)
-2013-01-22 17:58:13+0200 [-]       2/1    0.000    0.000    0.000    0.000 interface.py:525(names)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:537(__iter__)
-2013-01-22 17:58:13+0200 [-]       283    0.000    0.000    0.000    0.000 interface.py:55(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:701(Attribute)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:713(Method)
-2013-01-22 17:58:13+0200 [-]       208    0.001    0.000    0.001    0.000 interface.py:750(fromFunction)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.002    0.002 interface.py:801(_wire)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interface.py:90(SpecificationBasePy)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1029(IListeningPort)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1059(ILoggingContext)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1073(IFileDescriptor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1111(IReadDescriptor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1128(IWriteDescriptor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1145(IReadWriteDescriptor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1151(IHalfCloseableDescriptor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1167(ISystemHandle)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1185(IConsumer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1236(IProducer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1253(IPushProducer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1277(IPullProducer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1293(IProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1341(IProcessProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1407(IHalfCloseableProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:143(IInterface)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1442(IFileDescriptorReceiver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1461(IProtocolFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1491(ITransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:15(IAddress)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1552(ITCPTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1620(IUNIXTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1647(ITLSTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1661(ISSLTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1672(IProcessTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 interfaces.py:17(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1746(IServiceCollection)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1769(IUDPTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1814(IUNIXDatagramTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1830(IUNIXDatagramConnectedTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1851(IMulticastTransport)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1902(IStreamClientEndpoint)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:192(IReactorTCP)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1922(IStreamServerEndpoint)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1942(IStreamServerEndpointStringParser)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:1970(IStreamClientEndpointStringParser)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:239(IReactorSSL)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:24(IConnector)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:24(IElement)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:281(IReactorUNIX)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:302(IDeclaration)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:328(IReactorUNIXDatagram)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:361(IInterfaceDeclaration)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:374(IReactorWin32Events)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:407(IReactorUDP)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:421(IReactorMulticast)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:448(IReactorSocket)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:50(IAttribute)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:547(IReactorProcess)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:57(IResolverSimple)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:58(IMethod)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:633(IReactorTime)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:662(IAdapterRegistry)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:676(IDelayedCall)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:733(IReactorThreads)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:778(IReactorCore)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:78(IResolver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.003    0.003 interfaces.py:8(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:85(ISpecification)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:909(IReactorPluggableResolver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:925(IReactorDaemonize)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 interfaces.py:956(IReactorFDSet)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 io.py:34(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 io.py:69(IOBase)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 io.py:72(RawIOBase)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 io.py:75(BufferedIOBase)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 io.py:78(TextIOBase)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 keyword.py:11(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 lockfile.py:8(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 lockfile.py:88(FilesystemLock)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:14(Log)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:147(Logger)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 log.py:151(logPrefix)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:16(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:161(LogPublisher)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:168(__init__)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 log.py:171(addObserver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:182(removeObserver)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.002    0.000 log.py:188(msg)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:27(ILogContext)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 log.py:282(_safeFormat)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 log.py:308(textFromEventDict)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:341(FileLogObserver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:350(__init__)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 log.py:354(getTimezoneOffset)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.001    0.000 log.py:368(formatTime)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:37(ILogObserver)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.002    0.000 log.py:399(emit)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:424(PythonLoggingObserver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:475(StdioOnnaStick)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 log.py:491(__init__)
-2013-01-22 17:58:13+0200 [-]        52    0.000    0.000    0.002    0.000 log.py:515(write)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:537(startLogging)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:551(startLoggingWithObserver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:571(NullFile)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:596(DefaultObserver)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:616(start)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 log.py:619(stop)
-2013-01-22 17:58:13+0200 [-]         1    0.002    0.002    0.017    0.017 log.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 log.py:70(callWithContext)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 log.py:75(callWithLogger)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 main.py:11(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 main.py:22(installReactor)
-2013-01-22 17:58:13+0200 [-]       119    0.000    0.000    0.000    0.000 opcode.py:27(def_op)
-2013-01-22 17:58:13+0200 [-]        11    0.000    0.000    0.000    0.000 opcode.py:31(name_op)
-2013-01-22 17:58:13+0200 [-]         6    0.000    0.000    0.000    0.000 opcode.py:35(jrel_op)
-2013-01-22 17:58:13+0200 [-]         6    0.000    0.000    0.000    0.000 opcode.py:39(jabs_op)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 opcode.py:5(<module>)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 os.py:35(_get_exports_list)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pickle.py:1261(_EmptyClass)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pickle.py:171(Pickler)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 pickle.py:25(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pickle.py:58(PickleError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pickle.py:62(PicklingError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pickle.py:69(UnpicklingError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pickle.py:82(_Stop)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pickle.py:827(Unpickler)
-2013-01-22 17:58:13+0200 [-]       166    0.000    0.000    0.001    0.000 pkg_resources.py:1134(safe_name)
-2013-01-22 17:58:13+0200 [-]       161    0.000    0.000    0.001    0.000 pkg_resources.py:1142(safe_version)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1175(NullProvider)
-2013-01-22 17:58:13+0200 [-]        97    0.000    0.000    0.001    0.000 pkg_resources.py:1198(has_metadata)
-2013-01-22 17:58:13+0200 [-]        38    0.000    0.000    0.001    0.000 pkg_resources.py:1202(get_metadata)
-2013-01-22 17:58:13+0200 [-]        38    0.000    0.000    0.001    0.000 pkg_resources.py:1212(get_metadata_lines)
-2013-01-22 17:58:13+0200 [-]       135    0.000    0.000    0.000    0.000 pkg_resources.py:1263(_fn)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1278(EggProvider)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1304(DefaultProvider)
-2013-01-22 17:58:13+0200 [-]        97    0.000    0.000    0.001    0.000 pkg_resources.py:1307(_has)
-2013-01-22 17:58:13+0200 [-]        38    0.000    0.000    0.001    0.000 pkg_resources.py:1319(_get)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1337(EmptyProvider)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1345(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1353(ZipProvider)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.033    0.033 pkg_resources.py:14(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1521(FileMetadata)
-2013-01-22 17:58:13+0200 [-]       100    0.000    0.000    0.000    0.000 pkg_resources.py:1533(__init__)
-2013-01-22 17:58:13+0200 [-]       151    0.000    0.000    0.000    0.000 pkg_resources.py:1536(has_metadata)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1539(get_metadata)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1547(get_metadata_lines)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1565(PathMetadata)
-2013-01-22 17:58:13+0200 [-]        66    0.000    0.000    0.000    0.000 pkg_resources.py:1585(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1590(EggMetadata)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1606(ImpWrapper)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1627(ImpLoader)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 pkg_resources.py:1690(register_finder)
-2013-01-22 17:58:13+0200 [-]        32    0.000    0.000    0.001    0.000 pkg_resources.py:1700(find_distributions)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 pkg_resources.py:1729(find_nothing)
-2013-01-22 17:58:13+0200 [-]       196    0.002    0.000    0.009    0.000 pkg_resources.py:1733(find_on_path)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:175(ResolutionError)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 pkg_resources.py:1782(register_namespace_handler)
-2013-01-22 17:58:13+0200 [-]        75    0.000    0.000    0.005    0.000 pkg_resources.py:1799(_handle_ns)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:180(VersionConflict)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.002    0.000 pkg_resources.py:1820(declare_namespace)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:183(DistributionNotFound)
-2013-01-22 17:58:13+0200 [-]        83    0.000    0.000    0.003    0.000 pkg_resources.py:1852(fixup_namespace_packages)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:186(UnknownExtra)
-2013-01-22 17:58:13+0200 [-]        35    0.000    0.000    0.000    0.000 pkg_resources.py:1862(file_ns_handler)
-2013-01-22 17:58:13+0200 [-]        99    0.000    0.000    0.004    0.000 pkg_resources.py:1892(normalize_path)
-2013-01-22 17:58:13+0200 [-]      1510    0.000    0.000    0.001    0.000 pkg_resources.py:1896(_normalize_cached)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1903(_set_parent_ns)
-2013-01-22 17:58:13+0200 [-]        85    0.000    0.000    0.000    0.000 pkg_resources.py:1911(yield_lines)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 pkg_resources.py:197(register_loader_type)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:1992(EntryPoint)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:2120(Distribution)
-2013-01-22 17:58:13+0200 [-]       166    0.001    0.000    0.002    0.000 pkg_resources.py:2124(__init__)
-2013-01-22 17:58:13+0200 [-]       166    0.001    0.000    0.004    0.000 pkg_resources.py:2138(from_location)
-2013-01-22 17:58:13+0200 [-]       581    0.000    0.000    0.001    0.000 pkg_resources.py:2188(key)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:2207(version)
-2013-01-22 17:58:13+0200 [-]       294    0.000    0.000    0.003    0.000 pkg_resources.py:2251(_get_metadata)
-2013-01-22 17:58:13+0200 [-]        83    0.000    0.000    0.014    0.000 pkg_resources.py:2256(activate)
-2013-01-22 17:58:13+0200 [-]       454    0.000    0.000    0.001    0.000 pkg_resources.py:2288(__getattr__)
-2013-01-22 17:58:13+0200 [-]        83    0.001    0.000    0.008    0.000 pkg_resources.py:2347(insert_on)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 pkg_resources.py:238(get_build_platform)
-2013-01-22 17:58:13+0200 [-]        83    0.000    0.000    0.006    0.000 pkg_resources.py:2399(check_version_conflict)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:2448(DistInfoDistribution)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:2641(Requirement)
-2013-01-22 17:58:13+0200 [-]        67    0.001    0.000    0.001    0.000 pkg_resources.py:2741(_get_mro)
-2013-01-22 17:58:13+0200 [-]        65    0.000    0.000    0.000    0.000 pkg_resources.py:2744(cls)
-2013-01-22 17:58:13+0200 [-]        67    0.000    0.000    0.001    0.000 pkg_resources.py:2748(_find_adapter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:2798(_initialize)
-2013-01-22 17:58:13+0200 [-]        83    0.000    0.000    0.014    0.000 pkg_resources.py:2835(<lambda>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:348(IMetadataProvider)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:380(IResourceProvider)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:421(WorkingSet)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.007    0.007 pkg_resources.py:424(__init__)
-2013-01-22 17:58:13+0200 [-]        32    0.000    0.000    0.012    0.000 pkg_resources.py:438(add_entry)
-2013-01-22 17:58:13+0200 [-]        84    0.000    0.000    0.000    0.000 pkg_resources.py:503(__iter__)
-2013-01-22 17:58:13+0200 [-]       166    0.001    0.000    0.002    0.000 pkg_resources.py:520(add)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 pkg_resources.py:57(_declare_state)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.014    0.014 pkg_resources.py:698(subscribe)
-2013-01-22 17:58:13+0200 [-]        83    0.000    0.000    0.000    0.000 pkg_resources.py:707(_added_new)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 pkg_resources.py:724(Environment)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:870(ExtractionError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:888(ResourceManager)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkg_resources.py:892(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 pkg_resources.py:93(get_supported_platform)
-2013-01-22 17:58:13+0200 [-]       103    0.000    0.000    0.000    0.000 pkgutil.py:173(__init__)
-2013-01-22 17:58:13+0200 [-]        73    0.000    0.000    0.003    0.000 pkgutil.py:176(find_module)
-2013-01-22 17:58:13+0200 [-]        35    0.000    0.000    0.000    0.000 pkgutil.py:237(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkgutil.py:243(load_module)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pkgutil.py:257(_reopen)
-2013-01-22 17:58:13+0200 [-]       107    0.000    0.000    0.000    0.000 pkgutil.py:366(get_importer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:129(WrappingFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:189(ThrottlingProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:230(ThrottlingFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:369(SpewingProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:380(SpewingFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:385(LimitConnectionsByPeer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:39(ProtocolWrapper)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:407(LimitTotalConnectionsFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:449(TimeoutProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:536(TimeoutFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:562(TrafficLoggingProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:628(TrafficLoggingFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:658(TimeoutMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 policies.py:9(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:115(_FDWaker)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 posixbase.py:134(__init__)
-2013-01-22 17:58:13+0200 [-]         6    0.000    0.000    0.000    0.000 posixbase.py:143(<lambda>)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 posixbase.py:146(doRead)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 posixbase.py:150(<lambda>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:167(_UnixWaker)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:174(wakeUp)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:197(_SIGCHLDWaker)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:204(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:208(install)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:222(doRead)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:237(_DisconnectSelectableMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:267(PosixReactorBase)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:281(installWaker)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:295(_handleSignals)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:534(_removeAll)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:557(_PollLikeMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 posixbase.py:65(_SocketWaker)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.018    0.018 posixbase.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]       166    0.000    0.000    0.000    0.000 posixpath.py:104(splitext)
-2013-01-22 17:58:13+0200 [-]        84    0.000    0.000    0.000    0.000 posixpath.py:127(dirname)
-2013-01-22 17:58:13+0200 [-]       699    0.001    0.000    0.002    0.000 posixpath.py:139(islink)
-2013-01-22 17:58:13+0200 [-]       172    0.001    0.000    0.001    0.000 posixpath.py:321(normpath)
-2013-01-22 17:58:13+0200 [-]       172    0.000    0.000    0.001    0.000 posixpath.py:350(abspath)
-2013-01-22 17:58:13+0200 [-]       172    0.001    0.000    0.007    0.000 posixpath.py:364(realpath)
-2013-01-22 17:58:13+0200 [-]       100    0.000    0.000    0.000    0.000 posixpath.py:51(normcase)
-2013-01-22 17:58:13+0200 [-]       344    0.000    0.000    0.000    0.000 posixpath.py:59(isabs)
-2013-01-22 17:58:13+0200 [-]      1044    0.002    0.000    0.002    0.000 posixpath.py:68(join)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:106(ProcessWriter)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.004    0.004 process.py:11(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:220(ProcessReader)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:278(_BaseProcess)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 process.py:41(reapAllProcesses)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:476(_FDDetector)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:496(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:598(Process)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:83(detectLinuxBrokenPipeBehavior)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 process.py:928(PTYProcess)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.003    0.003 protocol.py:10(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:107(ClientFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:139(_InstanceFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:194(ClientCreator)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:21(Factory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:299(ReconnectingClientFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:435(ServerFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:441(BaseProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:477(Protocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:528(ProtocolToConsumerAdapter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:543(ConsumerToProtocolAdapter)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:561(ProcessProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:632(AbstractDatagramProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:646(doStart)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:657(doStop)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:676(stopProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:682(makeConnection)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:700(DatagramProtocol)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 protocol.py:711(logPrefix)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:727(ConnectedDatagramProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 protocol.py:747(FileWrapper)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pty.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.001    0.001 pyudt.py:11(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:116(bind)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:126(close)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:189(getsockname)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:227(listen)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:273(setblocking)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 pyudt.py:298(setsockopt)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:31(UdtSocket)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:38(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:458(Epoll)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 pyudt.py:84(UDTSOCKET)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 pyudt.py:92(__del__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 random.py:100(seed)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 random.py:40(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 random.py:651(WichmannHill)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 random.py:72(Random)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 random.py:801(SystemRandom)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 random.py:91(__init__)
-2013-01-22 17:58:13+0200 [-]       117    0.000    0.000    0.000    0.000 re.py:134(match)
-2013-01-22 17:58:13+0200 [-]       327    0.000    0.000    0.001    0.000 re.py:144(sub)
-2013-01-22 17:58:13+0200 [-]        22    0.000    0.000    0.014    0.001 re.py:188(compile)
-2013-01-22 17:58:13+0200 [-]       466    0.001    0.000    0.015    0.000 re.py:226(_compile)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 reflect.py:131(PropertyAccessor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 reflect.py:174(Accessor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 reflect.py:237(Summer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 reflect.py:285(QueueMethod)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 reflect.py:44(Settable)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 reflect.py:67(AccessorType)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 reflect.py:8(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 reflect.py:96(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 ro.py:17(<module>)
-2013-01-22 17:58:13+0200 [-]       229    0.000    0.000    0.003    0.000 ro.py:21(ro)
-2013-01-22 17:58:13+0200 [-]       229    0.001    0.000    0.001    0.000 ro.py:26(mergeOrderings)
-2013-01-22 17:58:13+0200 [-]       229    0.001    0.000    0.002    0.000 ro.py:60(_flatten)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 runtime.py:126(supportsThreads)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 runtime.py:49(Platform)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 runtime.py:5(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 runtime.py:56(__init__)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 runtime.py:69(getType)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 runtime.py:99(isWindows)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 socket.py:167(_closedsocket)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 socket.py:179(_socketobject)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 socket.py:235(_fileobject)
-2013-01-22 17:58:13+0200 [-]         1    0.002    0.002    0.002    0.002 socket.py:45(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 spawn.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]       146    0.000    0.000    0.003    0.000 sre_compile.py:178(_compile_charset)
-2013-01-22 17:58:13+0200 [-]       146    0.002    0.000    0.003    0.000 sre_compile.py:207(_optimize_charset)
-2013-01-22 17:58:13+0200 [-]       393    0.000    0.000    0.000    0.000 sre_compile.py:24(_identityfunction)
-2013-01-22 17:58:13+0200 [-]        27    0.001    0.000    0.001    0.000 sre_compile.py:258(_mk_bitmap)
-2013-01-22 17:58:13+0200 [-]    358/24    0.002    0.000    0.006    0.000 sre_compile.py:32(_compile)
-2013-01-22 17:58:13+0200 [-]       158    0.000    0.000    0.000    0.000 sre_compile.py:354(_simple)
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.001    0.000 sre_compile.py:361(_compile_info)
-2013-01-22 17:58:13+0200 [-]        48    0.000    0.000    0.000    0.000 sre_compile.py:474(isstring)
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.008    0.000 sre_compile.py:480(_code)
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.014    0.001 sre_compile.py:495(compile)
-2013-01-22 17:58:13+0200 [-]       745    0.000    0.000    0.000    0.000 sre_parse.py:126(__len__)
-2013-01-22 17:58:13+0200 [-]      1532    0.001    0.000    0.001    0.000 sre_parse.py:130(__getitem__)
-2013-01-22 17:58:13+0200 [-]       158    0.000    0.000    0.000    0.000 sre_parse.py:134(__setitem__)
-2013-01-22 17:58:13+0200 [-]       445    0.000    0.000    0.000    0.000 sre_parse.py:138(append)
-2013-01-22 17:58:13+0200 [-]   514/182    0.001    0.000    0.001    0.000 sre_parse.py:140(getwidth)
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.000    0.000 sre_parse.py:178(__init__)
-2013-01-22 17:58:13+0200 [-]      1255    0.001    0.000    0.001    0.000 sre_parse.py:182(__next)
-2013-01-22 17:58:13+0200 [-]       927    0.000    0.000    0.000    0.000 sre_parse.py:195(match)
-2013-01-22 17:58:13+0200 [-]      1011    0.000    0.000    0.001    0.000 sre_parse.py:201(get)
-2013-01-22 17:58:13+0200 [-]        16    0.000    0.000    0.000    0.000 sre_parse.py:210(isident)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 sre_parse.py:216(isname)
-2013-01-22 17:58:13+0200 [-]        40    0.000    0.000    0.000    0.000 sre_parse.py:225(_class_escape)
-2013-01-22 17:58:13+0200 [-]        96    0.000    0.000    0.000    0.000 sre_parse.py:257(_escape)
-2013-01-22 17:58:13+0200 [-]    100/24    0.001    0.000    0.006    0.000 sre_parse.py:301(_parse_sub)
-2013-01-22 17:58:13+0200 [-]    166/24    0.002    0.000    0.006    0.000 sre_parse.py:379(_parse)
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.006    0.000 sre_parse.py:663(parse)
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.000    0.000 sre_parse.py:67(__init__)
-2013-01-22 17:58:13+0200 [-]        64    0.000    0.000    0.000    0.000 sre_parse.py:72(opengroup)
-2013-01-22 17:58:13+0200 [-]        64    0.000    0.000    0.000    0.000 sre_parse.py:83(closegroup)
-2013-01-22 17:58:13+0200 [-]       358    0.000    0.000    0.000    0.000 sre_parse.py:90(__init__)
-2013-01-22 17:58:13+0200 [-]       889    0.000    0.000    0.000    0.000 stat.py:24(S_IFMT)
-2013-01-22 17:58:13+0200 [-]       196    0.000    0.000    0.000    0.000 stat.py:40(S_ISDIR)
-2013-01-22 17:58:13+0200 [-]       693    0.000    0.000    0.000    0.000 stat.py:55(S_ISLNK)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 string.py:220(lower)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 string.py:511(replace)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 styles.py:111(Ephemeral)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 styles.py:170(Versioned)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 styles.py:9(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:262(SchedulerError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:27(LoopingCall)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:272(SchedulerStopped)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:280(TaskFinished)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:288(TaskDone)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:295(TaskStopped)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:302(TaskFailed)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:310(NotPaused)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:318(_Timer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:335(CooperativeTask)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:499(Cooperator)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:504(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:676(Clock)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 task.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:1142(Connector)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:116(_SocketCloser)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:145(_AbortingMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:172(Connection)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:325(_BaseBaseClient)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:490(BaseClient)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:643(_BaseTCPClient)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:735(Client)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:744(Server)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tcp.py:856(Port)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.008    0.008 tcp.py:9(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    5.054    5.054 testudt.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 testudt.py:13(Echo)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 testudt.py:15(startProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 testudt.py:24(Tester)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.002    0.002 testudt.py:26(listen_to_udt_port)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 testudt.py:30(print_hello)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:104(getThreadID)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:118(registerAsIOThread)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:14(DummyLock)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 threadable.py:33(_synchPre)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 threadable.py:43(_synchPost)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:48(_sync)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.003    0.000 threadable.py:49(sync)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:60(synchronize)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:76(init)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:8(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threadable.py:88(XLock)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 threading.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:101(RLock)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:104(_RLock)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 threading.py:106(__init__)
-2013-01-22 17:58:13+0200 [-]        20    0.000    0.000    0.000    0.000 threading.py:121(acquire)
-2013-01-22 17:58:13+0200 [-]        20    0.000    0.000    0.000    0.000 threading.py:141(release)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 threading.py:181(Condition)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:184(_Condition)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 threading.py:186(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:226(_is_owned)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:277(notify)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:295(notifyAll)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:304(_Semaphore)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:352(_BoundedSemaphore)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:364(Event)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:367(_Event)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:371(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:385(set)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:424(Thread)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:436(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:531(_set_ident)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:56(_Verbose)
-2013-01-22 17:58:13+0200 [-]         7    0.000    0.000    0.000    0.000 threading.py:58(__init__)
-2013-01-22 17:58:13+0200 [-]        41    0.000    0.000    0.000    0.000 threading.py:63(_note)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:696(ident)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:737(_Timer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:766(_MainThread)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:768(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:775(_set_daemon)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:806(_DummyThread)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threading.py:830(currentThread)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 threads.py:8(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tls.py:162(_ProducerMembrane)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tls.py:210(TLSMemoryBIOProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.006    0.006 tls.py:36(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tls.py:581(TLSMemoryBIOFactory)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tls.py:64(_PullToPush)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 token.py:3(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tokenize.py:145(TokenError)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tokenize.py:147(StopTokenizing)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tokenize.py:178(Untokenizer)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.011    0.011 tokenize.py:23(<module>)
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 tokenize.py:44(group)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tokenize.py:45(any)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 tokenize.py:46(maybe)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 tty.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.004    0.004 udp.py:16(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udp.py:232(connectionLost)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udp.py:248(setLogStr)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udp.py:256(logPrefix)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udp.py:273(MulticastMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udp.py:329(MulticastPort)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udp.py:56(Port)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udp.py:84(__repr__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.002    0.002 udp.py:96(startListening)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 udt.py:1(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 udt.py:126(_connectToProtocol)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udt.py:19(Port)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udt.py:28(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udt.py:58(createInternetSocket)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.001    0.001 udt.py:69(_bindSocket)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.002    0.002 udt.py:91(startListening)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.001    0.000 udtepollreactor.py:125(addReader)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 udtepollreactor.py:158(removeReader)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udtepollreactor.py:169(removeWriter)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 udtepollreactor.py:180(_remove)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udtepollreactor.py:21(IReactorUDT)
-2013-01-22 17:58:13+0200 [-]    660032    0.813    0.000    0.813    0.000 udtepollreactor.py:219(_handleSystemSocketSet)
-2013-01-22 17:58:13+0200 [-]    330016    0.552    0.000    3.513    0.000 udtepollreactor.py:268(doPoll)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 udtepollreactor.py:298(_doReadOrWrite)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.002    0.002 udtepollreactor.py:339(listenUDT)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udtepollreactor.py:355(install)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udtepollreactor.py:36(_UDTContinuousPolling)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.186    0.186 udtepollreactor.py:4(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udtepollreactor.py:43(UDTEPollReactor)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 udtepollreactor.py:49(__init__)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.001    0.000 udtepollreactor.py:86(_add)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 urlparse.py:118(SplitResult)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 urlparse.py:126(ParseResult)
-2013-01-22 17:58:13+0200 [-]         1    0.001    0.001    0.002    0.002 urlparse.py:29(<module>)
-2013-01-22 17:58:13+0200 [-]       485    0.000    0.000    0.000    0.000 urlparse.py:320(<genexpr>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 urlparse.py:71(ResultMixin)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 util.py:16(get_platform)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 util.py:23(OrderedDict)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 util.py:303(LineLog)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 util.py:349(IntervalDifferential)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 util.py:384(_IntervalDifferentialIterator)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.001    0.000 util.py:5(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 util.py:566(SubclassableCStringIO)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 version.py:7(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 versions.py:17(_inf)
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.000    0.000 versions.py:201(_getSVNVersion)
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 versions.py:250(getVersionString)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 versions.py:38(IncomparableVersions)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 versions.py:45(Version)
-2013-01-22 17:58:13+0200 [-]        10    0.000    0.000    0.000    0.000 versions.py:53(__init__)
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.000    0.000 versions.py:73(short)
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.000    0.000 versions.py:85(base)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 versions.py:9(<module>)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 warnings.py:45(filterwarnings)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 weakref.py:101(get)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 weakref.py:223(__new__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 weakref.py:228(__init__)
-2013-01-22 17:58:13+0200 [-]       185    0.000    0.000    0.000    0.000 weakref.py:243(__init__)
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 weakref.py:245(remove)
-2013-01-22 17:58:13+0200 [-]        84    0.000    0.000    0.000    0.000 weakref.py:252(__delitem__)
-2013-01-22 17:58:13+0200 [-]       334    0.000    0.000    0.000    0.000 weakref.py:261(__setitem__)
-2013-01-22 17:58:13+0200 [-]       418    0.001    0.000    0.001    0.000 weakref.py:283(get)
-2013-01-22 17:58:13+0200 [-]       231    0.000    0.000    0.000    0.000 weakref.py:350(keys)
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 weakref.py:47(__init__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 weakref.py:79(__setitem__)
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_hashlib.openssl_md5}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_hashlib.openssl_sha1}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_hashlib.openssl_sha224}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_hashlib.openssl_sha256}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_hashlib.openssl_sha384}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_hashlib.openssl_sha512}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_heapq.heappop}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {_heapq.heappush}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_socket.inet_pton}
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.000    0.000 {_sre.compile}
-2013-01-22 17:58:13+0200 [-]        20    0.000    0.000    0.000    0.000 {_sre.getlower}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_udt4.bind}
-2013-01-22 17:58:13+0200 [-]         1    0.082    0.082    0.082    0.082 {_udt4.cleanup}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_udt4.close}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_udt4.getsockname}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_udt4.listen}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_udt4.pyudt4_version}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {_udt4.setsockopt}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_udt4.socket}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {_udt4.startup}
-2013-01-22 17:58:13+0200 [-]        38    0.000    0.000    0.000    0.000 {abs}
-2013-01-22 17:58:13+0200 [-]        43    0.000    0.000    0.000    0.000 {all}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {binascii.hexlify}
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.000    0.000 {built-in method __new__ of type object at 0x8587e0}
-2013-01-22 17:58:13+0200 [-]        83    0.000    0.000    0.001    0.000 {built-in method fromkeys}
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 {built-in method fromtimestamp}
-2013-01-22 17:58:13+0200 [-]        38    0.000    0.000    0.000    0.000 {built-in method utcfromtimestamp}
-2013-01-22 17:58:13+0200 [-]        18    0.000    0.000    0.000    0.000 {callable}
-2013-01-22 17:58:13+0200 [-]       485    0.000    0.000    0.000    0.000 {chr}
-2013-01-22 17:58:13+0200 [-]         5    0.000    0.000    0.000    0.000 {dir}
-2013-01-22 17:58:13+0200 [-]        16    0.000    0.000    0.000    0.000 {fcntl.fcntl}
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 {function changed at 0x20e2488}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {function seed at 0x2094050}
-2013-01-22 17:58:13+0200 [-]       649    0.000    0.000    0.000    0.000 {getattr}
-2013-01-22 17:58:13+0200 [-]        12    0.000    0.000    0.000    0.000 {globals}
-2013-01-22 17:58:13+0200 [-]       116    0.000    0.000    0.000    0.000 {hasattr}
-2013-01-22 17:58:13+0200 [-]        87    0.000    0.000    0.000    0.000 {imp.acquire_lock}
-2013-01-22 17:58:13+0200 [-]        76    0.001    0.000    0.001    0.000 {imp.find_module}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {imp.load_module}
-2013-01-22 17:58:13+0200 [-]        87    0.000    0.000    0.000    0.000 {imp.release_lock}
-2013-01-22 17:58:13+0200 [-]      3979    0.001    0.000    0.001    0.000 {isinstance}
-2013-01-22 17:58:13+0200 [-]     38/27    0.000    0.000    0.000    0.000 {issubclass}
-2013-01-22 17:58:13+0200 [-]       231    0.000    0.000    0.000    0.000 {iter}
-2013-01-22 17:58:13+0200 [-] 5549/5351    0.000    0.000    0.001    0.000 {len}
-2013-01-22 17:58:13+0200 [-]       205    0.001    0.000    0.018    0.000 {map}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {math.exp}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {math.log}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {math.sqrt}
-2013-01-22 17:58:13+0200 [-]    330116    0.071    0.000    0.071    0.000 {max}
-2013-01-22 17:58:13+0200 [-]        43    0.000    0.000    0.000    0.000 {method '__contains__' of 'frozenset' objects}
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 {method '__contains__' of 'set' objects}
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 {method '__subclasses__' of 'type' objects}
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 {method '__subclasshook__' of 'object' objects}
-2013-01-22 17:58:13+0200 [-]        22    0.000    0.000    0.000    0.000 {method 'acquire' of 'thread.lock' objects}
-2013-01-22 17:58:13+0200 [-]        61    0.000    0.000    0.000    0.000 {method 'add' of 'set' objects}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {method 'add_ssock' of 'UDTepoll' objects}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {method 'add_usock' of 'UDTepoll' objects}
-2013-01-22 17:58:13+0200 [-]      6850    0.001    0.000    0.001    0.000 {method 'append' of 'list' objects}
-2013-01-22 17:58:13+0200 [-]       231    0.000    0.000    0.000    0.000 {method 'clear' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {method 'clear' of 'set' objects}
-2013-01-22 17:58:13+0200 [-]        39    0.000    0.000    0.000    0.000 {method 'close' of 'file' objects}
-2013-01-22 17:58:13+0200 [-]        25    0.000    0.000    0.000    0.000 {method 'copy' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
-2013-01-22 17:58:13+0200 [-]      6081    0.001    0.000    0.001    0.000 {method 'endswith' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]        36    0.000    0.000    0.000    0.000 {method 'extend' of 'list' objects}
-2013-01-22 17:58:13+0200 [-]        17    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {method 'find_module' of 'imp.NullImporter' objects}
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 {method 'flush' of 'file' objects}
-2013-01-22 17:58:13+0200 [-]        78    0.000    0.000    0.000    0.000 {method 'format' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]      3092    0.001    0.000    0.001    0.000 {method 'get' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]        42    0.000    0.000    0.000    0.000 {method 'get' of 'dictproxy' objects}
-2013-01-22 17:58:13+0200 [-]       166    0.000    0.000    0.000    0.000 {method 'group' of '_sre.SRE_Match' objects}
-2013-01-22 17:58:13+0200 [-]        83    0.000    0.000    0.000    0.000 {method 'index' of 'list' objects}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {method 'insert' of 'list' objects}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {method 'isOrExtends' of '_interface_coptimizations.SpecificationBase' objects}
-2013-01-22 17:58:13+0200 [-]       300    0.000    0.000    0.000    0.000 {method 'isalnum' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]        43    0.000    0.000    0.000    0.000 {method 'isdigit' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]       302    0.000    0.000    0.000    0.000 {method 'items' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]         4    0.000    0.000    0.000    0.000 {method 'iteritems' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]       228    0.000    0.000    0.000    0.000 {method 'join' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]       237    0.000    0.000    0.000    0.000 {method 'keys' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]      2566    0.000    0.000    0.000    0.000 {method 'lower' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]       284    0.000    0.000    0.000    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
-2013-01-22 17:58:13+0200 [-]        64    0.000    0.000    0.000    0.000 {method 'pop' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]        21    0.000    0.000    0.000    0.000 {method 'pop' of 'list' objects}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {method 'providedBy' of '_interface_coptimizations.SpecificationBase' objects}
-2013-01-22 17:58:13+0200 [-]        39    0.000    0.000    0.000    0.000 {method 'read' of 'file' objects}
-2013-01-22 17:58:13+0200 [-]        21    0.000    0.000    0.000    0.000 {method 'release' of 'thread.lock' objects}
-2013-01-22 17:58:13+0200 [-]        66    0.000    0.000    0.000    0.000 {method 'remove' of 'list' objects}
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 {method 'remove' of 'set' objects}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {method 'remove_usock' of 'UDTepoll' objects}
-2013-01-22 17:58:13+0200 [-]       199    0.000    0.000    0.000    0.000 {method 'replace' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]       687    0.000    0.000    0.000    0.000 {method 'reverse' of 'list' objects}
-2013-01-22 17:58:13+0200 [-]       416    0.000    0.000    0.000    0.000 {method 'rfind' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]        84    0.000    0.000    0.000    0.000 {method 'rstrip' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]       368    0.000    0.000    0.000    0.000 {method 'setdefault' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {method 'setter' of 'property' objects}
-2013-01-22 17:58:13+0200 [-]       649    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]        40    0.000    0.000    0.000    0.000 {method 'splitlines' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]      3487    0.001    0.000    0.001    0.000 {method 'startswith' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]        47    0.000    0.000    0.000    0.000 {method 'strip' of 'str' objects}
-2013-01-22 17:58:13+0200 [-]       327    0.001    0.000    0.001    0.000 {method 'sub' of '_sre.SRE_Pattern' objects}
-2013-01-22 17:58:13+0200 [-]       234    0.000    0.000    0.000    0.000 {method 'update' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {method 'values' of 'dict' objects}
-2013-01-22 17:58:13+0200 [-]    330016    2.147    0.000    2.147    0.000 {method 'wait' of 'UDTepoll' objects}
-2013-01-22 17:58:13+0200 [-]        19    0.000    0.000    0.000    0.000 {method 'write' of 'file' objects}
-2013-01-22 17:58:13+0200 [-]       812    0.000    0.000    0.000    0.000 {min}
-2013-01-22 17:58:13+0200 [-]        39    0.000    0.000    0.000    0.000 {open}
-2013-01-22 17:58:13+0200 [-]       373    0.000    0.000    0.000    0.000 {ord}
-2013-01-22 17:58:13+0200 [-]        30    0.000    0.000    0.000    0.000 {posix.access}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {posix.close}
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 {posix.getcwd}
-2013-01-22 17:58:13+0200 [-]        30    0.001    0.000    0.001    0.000 {posix.listdir}
-2013-01-22 17:58:13+0200 [-]       699    0.001    0.000    0.001    0.000 {posix.lstat}
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 {posix.pipe}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {posix.read}
-2013-01-22 17:58:13+0200 [-]       294    0.001    0.000    0.001    0.000 {posix.stat}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {posix.uname}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {posix.urandom}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {posix.write}
-2013-01-22 17:58:13+0200 [-]       215    0.000    0.000    0.000    0.000 {range}
-2013-01-22 17:58:13+0200 [-]         8    0.000    0.000    0.000    0.000 {repr}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {select.select}
-2013-01-22 17:58:13+0200 [-]        24    0.000    0.000    0.000    0.000 {setattr}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {signal.getsignal}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {signal.set_wakeup_fd}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {signal.siginterrupt}
-2013-01-22 17:58:13+0200 [-]         3    0.000    0.000    0.000    0.000 {signal.signal}
-2013-01-22 17:58:13+0200 [-]        14    0.000    0.000    0.000    0.000 {sys._getframe}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {sys.getdefaultencoding}
-2013-01-22 17:58:13+0200 [-]         1    0.000    0.000    0.000    0.000 {sys.getdlopenflags}
-2013-01-22 17:58:13+0200 [-]         2    0.000    0.000    0.000    0.000 {sys.setdlopenflags}
-2013-01-22 17:58:13+0200 [-]         6    0.000    0.000    0.000    0.000 {thread.allocate_lock}
-2013-01-22 17:58:13+0200 [-]        43    0.000    0.000    0.000    0.000 {thread.get_ident}
-2013-01-22 17:58:13+0200 [-]    660054    0.061    0.000    0.061    0.000 {time.time}
-2013-01-22 17:58:13+0200 [-]       208    0.000    0.000    0.000    0.000 {zip}
-2013-01-22 17:58:13+0200 [-]   283/108    0.000    0.000    0.007    0.000 {zope.interface._zope_interface_coptimizations.implementedBy}
-2013-01-22 17:58:13+0200 [-] 
-2013-01-22 17:58:13+0200 [-] 

examples/client.py

+from socket import AF_INET, SOCK_DGRAM, AI_PASSIVE
+from udt4 import socket, listen, UDTepoll, bind, recvmsg, UDTException
 from udt4 import startup, cleanup, accept, UDT_EPOLL_IN, UDT_EPOLL_OUT, UDT_EPOLL_ERR
+from udt4 import EASYNCRCV, sendmsg
 from socket import AF_INET, SOCK_DGRAM, AI_PASSIVE
 import udt4
 from udt4.pyudt import UdtSocket
 import gc
+import random
 from time import sleep
 
+ok = True
 startup()
+poller = UDTepoll()
 s = UdtSocket(AF_INET, SOCK_DGRAM, AI_PASSIVE)
+s.setblocking(False)
 print s.UDTSOCKET
-s.setblocking(True)
-s.connect(("127.0.0.1", 5000))
+counter = 0
+poller.add_usock(s.UDTSOCKET, UDT_EPOLL_IN)
+
+# try:
+#     while 1:
+#         sock, addr = s.accept()
+#         sleep(20)
+        
+# except KeyboardInterrupt:
+#     exit("Bye!")
+connected = False
 try:
     while True:
-        sleep(20)
-        #mess = s.recvmsg(1000)
-        #print mess
-        #s.sendmsg(mess)
-        pass
-except udt4.UDTException as ue:
-    print ue
+        print "---------------------------------------------"
+        sets = [[], []]
+        try:
+            sets = poller.wait(True, True, 1000, False, False)
+        except UDTException as ue:
+            if ue[0] == 6003:
+                pass
+        print sets
+
+        if connected:
+            poller.add_usock(s.UDTSOCKET , UDT_EPOLL_OUT)
+            connected = False
+
+        if ok:
+            try:
+                connectResult = s.connect_ex(("127.0.0.1", 5000))
+            except udt.UDTException as ue:
+                connectResult = ue[0]
+
+            if connectResult == 0:
+                print "CONNECTED!"
+                connected = True
+                ok = False
+
+        for socket in sets[0]:
+            if (socket.UDTSOCKET == s.UDTSOCKET.UDTSOCKET):
+                try:
+                    mess = recvmsg(socket, 100)
+                    print "READ:", socket,";", "RECV:", mess
+                    if counter < 100:
+                        poller.add_usock(socket , UDT_EPOLL_OUT)
+                    #sendmsg(socket.UDTSOCKET, mess, len(mess))
+                except udt4.UDTException as ue:
+                    print "ERR:",ue
+                    if ue[0] == 6002:
+                        poller.remove_usock(socket)
+                        poller.add_usock(socket, UDT_EPOLL_IN)
+                        pass
+            gc.collect()
+
+        for socket in sets[1]:
+            if s.UDTSOCKET.UDTSOCKET == socket.UDTSOCKET:
+                mess = "HELLO!"
+                mess = sendmsg(socket, mess, len(mess))
+                poller.remove_usock(socket)
+                poller.add_usock(socket, UDT_EPOLL_IN)
+
+                counter += 1
+
+            gc.collect()
+except KeyboardInterrupt:
+    poller.remove_usock(s.UDTSOCKET)
+    s.close()
+    cleanup()
     exit("Bye!")
-except KeyboardInterrupt:
-    exit("Bye!")
-cleanup()
 
-# import sys
-# sys.path.append("../")
 
-# from udt4twisted import udtepollreactor
-# udtepollreactor.install()
-
-# from twisted.python import log
-# from twisted.internet import reactor, defer
-# from twisted.internet.protocol import DatagramProtocol
-# from twisted.python import log
-
-# log.startLogging(sys.stdout)
-
-
-# class UDTClient(DatagramProtocol):
-
-#     identifier = 0
-
-#     def doSend1(self):
-#         self.transport.write("?>!{0}".format(self.identifier),
-#                              ("127.0.0.1", 5000))
-
-#     def datagramReceived(self, data, (host, port)):
-#         print "Received %r" % data
-#         self.transport.write("bomb!!!{0}".format(self.identifier),
-#                                                 ("127.0.0.1", 5000))
-
-# udtclient = UDTClient()
-# udtclient2 = UDTClient()
-# udtclient2.identifier = 1
-# print udtclient2.identifier
-# reactor.connectUDT("127.0.0.1", 5000, udtclient)
-# reactor.connectUDT("127.0.0.1", 5000, udtclient2)
-# reactor.callLater(1, udtclient.doSend1)
-# reactor.callLater(1, udtclient2.doSend1)
-# reactor.run()
-
-# from udt4 import socket, listen, UDTepoll, bind, recvmsg, UDTException
-# from udt4 import startup, cleanup, accept, UDT_EPOLL_IN, UDT_EPOLL_OUT, UDT_EPOLL_ERR
-# from udt4 import EASYNCRCV, sendmsg
-# from socket import AF_INET, SOCK_DGRAM, AI_PASSIVE
-# import udt4
-# from udt4.pyudt import UdtSocket
-# from time import sleep 
 
 # startup()
 # s = UdtSocket(AF_INET, SOCK_DGRAM, AI_PASSIVE)
 # print s.UDTSOCKET
-# s.setblocking(False)
-# s.connect_ex(("127.0.0.1", 5000))
-# poller = UDTepoll()
-# poller.add_usock(s.UDTSOCKET, UDT_EPOLL_IN)
+# s.setblocking(True)
+# s.setsockopt(udt4.UDT_RCVTIMEO, 1000)
+# s.connect(("127.0.0.1", 5000))
+# s.sendmsg("HELLO!", 7)
+# try:
+#     while True:
+#         try:
+#             mess = s.recvmsg(1000)
+#         except udt4.UDTException as ue:
+#             if ue[0] == 6003:
+#                 pass
+#             else:
+#                 raise
+#         else:
+#             print repr(mess)
+#             s.sendmsg(mess)
+#             pass
+# except udt4.UDTException as ue:
+#     print ue
+#     exit("Bye!")
+# except KeyboardInterrupt:
+#     pass
+
+# print "NEXT"
+# s.sendmsg("HELLO!", 7)
 
 # try:
 #     while True:
-#         sets = poller.wait(True, True, 1000, False, False)
-#         #print sets
-#         for socket in sets[0]:
-#             if (socket.UDTSOCKET == s.UDTSOCKET.UDTSOCKET):
-#                 print 
-#                 try:
-#                     mess = recvmsg(socket.UDTSOCKET, 200)
-#                     print "READ:", socket, ";RECV:", mess
-#                     sendmsg(socket.UDTSOCKET, mess, len(mess))
-#                 except udt4.UDTException as ue:
-#                     print "ERR:",ue
-#                     poller.remove_usock(socket, UDT_EPOLL_IN)
-#                     if ue[0] == 6002:
-#                         poller.add_usock(socket, UDT_EPOLL_IN)
-#             gc.collect()
+#         try:
+#             mess = s.recvmsg(1000)
+#         except udt4.UDTException as ue:
+#             if ue[0] == 6003:
+#                 print "TIMEOUT"
+#                 pass
+#             else:
+#                 raise
+#         else:
+#             print repr(mess)
+#             s.sendmsg(mess)
+# except udt4.UDTException as ue:
+#     print ue
+#     exit("Bye!")
 
 # except KeyboardInterrupt:
 #     exit("Bye!")
-# poller.remove_usock(s.UDTSOCKET)
 # cleanup()

examples/log

-2013-02-18 16:23:49+0200 [-] Log opened.
-2013-02-18 16:23:49+0200 [-] ADDING:6 with flags:1
-2013-02-18 16:23:50+0200 [-] Hello!
-2013-02-18 16:23:50+0200 [-] Starting factory <__main__.EchoFactory instance at 0x1bada70>
-2013-02-18 16:23:50+0200 [-] Started to connect.
-2013-02-18 16:23:50+0200 [-] <udt4twisted.udt.Connector instance at 0x1badb00>
-2013-02-18 16:23:50+0200 [-] ADDING:984591679 with flags:4
-2013-02-18 16:23:50+0200 [Uninitialized] Connected.
-2013-02-18 16:23:50+0200 [Uninitialized] CONN MADE!
-2013-02-18 16:23:50+0200 [Uninitialized] REMOVING:984591679 with flags:4
-2013-02-18 16:23:50+0200 [Uninitialized] ADDING:984591679 with flags:1
-2013-02-18 16:23:50+0200 [Echo,client] received An apple a day keeps the doctor away
-	 from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!!bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:50+0200 [Echo,client] received bomb!!! from IPv4Address(UDP, '127.0.0.1', 5000)
-2013-02-18 16:23:52+0200 [Echo,client] REMOVING:984591679 with flags:1
-2013-02-18 16:23:52+0200 [Echo,client] Connection failed. Reason: [Failure instance: Traceback (failure with no frames): <class 'udt4.UDTException'>: (5004, 'Operation not supported: Invalid socket ID.')
-2013-02-18 16:23:52+0200 [Echo,client] ]
-2013-02-18 16:23:52+0200 [Echo,client] Stopping factory <__main__.EchoFactory instance at 0x1bada70>

examples/newclient.py

 
     def dataReceived(self, data):
         log.msg("received {0} from {1}".format(data, self.transport.getPeer()))
-        self.transport.write("bomb!!!", 200, False)
+        self.transport.write(data)
 
     def connectionLost(self, reason):
         print "CONN LOST!"
 
 class EchoFactory(ClientFactory):
+    conn = []
 
     def startedConnecting(self, connector):
         print 'Started to connect.'
 
     def buildProtocol(self, addr):
         print 'Connected.'
-        return Echo()
+        self.conn.append(Echo())
+        return self.conn[-1]
 
     def clientConnectionLost(self, connector, reason):
         print 'Lost connection.  Reason:', reason
     port = None
     def connect_to_udt_port(self, res):
         self.echo = EchoFactory()
-        self.port = reactor.connectUDT("127.0.0.1", 5000, self.echo, 5)
+        self.port = reactor.connectUDT("127.0.0.1", 5000, self.echo)
+        reactor.callLater(3, self.send_after_time, self.echo)
         print self.port
 
+    def send_after_time(self, factory):
+        factory.conn[0].transport.write("HEQQ!")
+                      
     def print_hello(self, res):
         print "Hello!"
         return "hello"

examples/newserver.py

 class Echo(Protocol):
     counter=0
     def connectionMade(self):
-        self.transport.write("An apple a day keeps the doctor away\r\n")
+        pass
+        #self.transport.write("An apple a day keeps the doctor away\r\n")
 
     def dataReceived(self, data):
-        print self.counter
-        if self.counter == 100:
+        #print self.counter
+        log.msg("{2}:received {0}:{1}".format(self.counter, data, len(data)))
+        if self.counter == 10:
             return
-        log.msg("received {0}:{1}".format(data, len(data)))
-        self.transport.write(data, 10, False)
+        self.transport.write(data)
         self.counter += 1
 
     def connectionLost(self, reason):

examples/progress

-2013-01-22 23:37:09+0200 [-] 607409555 {607409555: <__main__.Echo on 5000>, 4: <twisted.internet.posixbase._UnixWaker object at 0x28aca50>, 6: <twisted.internet.posixbase._SIGCHLDWaker object at 0x28acb50>}
-2013-01-22 23:37:09+0200 [-] FD: <UDTSOCKET object at 0x283ae18> SELECT: <__main__.Echo on 5000>
-2013-01-22 23:37:09+0200 [-] <UDTSOCKET object at 0x283adc8> ('127.0.0.1', 2996)
-2013-01-22 23:37:09+0200 [Echo (UDP)] Hello from doRead
-2013-01-22 23:37:09+0200 [Echo (UDP)] Unhandled Error
-	Traceback (most recent call last):
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 88, in callWithLogger
-	    return callWithContext({"system": lp}, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 73, in callWithContext
-	    return context.call({ILogContext: newCtx}, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
-	    return self.currentContext().callWithContext(ctx, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
-	    return func(*args,**kw)
-	--- <exception caught here> ---
-	  File "../udt4twisted/udtepollreactor.py", line 355, in _doReadOrWrite
-	    why = selectable.doRead(fd)
-	  File "../udt4twisted/udt.py", line 109, in doRead
-	    print "recv from:", fd, " size:", udt.UDT_RCVDATA
-	exceptions.AttributeError: 'module' object has no attribute 'UDT_RCVDATA'
-	
-2013-01-22 23:37:09+0200 [Echo (UDP)] Unhandled Error
-	Traceback (most recent call last):
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 1173, in run
-	    self.mainLoop()
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 1185, in mainLoop
-	    self.doIteration(t)
-	  File "../udt4twisted/udtepollreactor.py", line 328, in doPoll
-	    self._handleUDTReadSocketSet(uread, self._POLL_IN)
-	  File "../udt4twisted/udtepollreactor.py", line 281, in _handleUDTReadSocketSet
-	    event)
-	--- <exception caught here> ---
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 88, in callWithLogger
-	    return callWithContext({"system": lp}, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 73, in callWithContext
-	    return context.call({ILogContext: newCtx}, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
-	    return self.currentContext().callWithContext(ctx, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
-	    return func(*args,**kw)
-	  File "../udt4twisted/udtepollreactor.py", line 370, in _doReadOrWrite
-	    self._disconnectSelectable(selectable, why, inRead)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 252, in _disconnectSelectable
-	    self.removeReader(selectable)
-	  File "../udt4twisted/udtepollreactor.py", line 194, in removeReader
-	    self._POLL_IN, self._POLL_OUT)
-	  File "../udt4twisted/udtepollreactor.py", line 233, in _remove
-	    del selectables[fd]
-	exceptions.KeyError: <UDTSOCKET object at 0x7f780efa5800>
-	
-^C2013-01-22 23:37:13+0200 [-] Received SIGINT, shutting down.
-2013-01-22 23:37:13+0200 [-] Unhandled Error
-	Traceback (most recent call last):
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 418, in fireEvent
-	    DeferredList(beforeResults).addCallback(self._continueFiring)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 305, in addCallback
-	    callbackKeywords=kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 294, in addCallbacks
-	    self._runCallbacks()
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 576, in _runCallbacks
-	    current.result = callback(current.result, *args, **kw)
-	--- <exception caught here> ---
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 431, in _continueFiring
-	    callable(*args, **kwargs)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 622, in disconnectAll
-	    selectables = self.removeAll()
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/epollreactor.py", line 337, in removeAll
-	    [self._selectables[fd] for fd in self._reads],
-	exceptions.KeyError: <UDTSOCKET object at 0x7f780efa5800>
 VERSION = {
         'major' : 0,
         'minor' : 2,
-        'patch' : 3,
+        'patch' : 4,
         }
 # Utility function to read the README file.
 # Used for the long_description.  It's nice, because now 1) we have a top level

udt4twisted/udt.py

 import struct
 import socket
 from zope.interface import implementer
+from twisted.internet.defer import inlineCallbacks, returnValue, deferredGenerator
 from twisted.internet import fdesc
 from twisted.python.compat import _PY3
 from twisted.internet import base, defer, address, udp, tcp
 from socket import AI_PASSIVE
 from errno import EWOULDBLOCK, EINTR, EMSGSIZE, ECONNREFUSED, EAGAIN
 from twisted.python.compat import lazyByteSlice
+from collections import deque
 import gc
 _sockErrReadIgnore = [EAGAIN, EINTR, EWOULDBLOCK]
 _sockErrReadRefuse = [ECONNREFUSED]
         # in the result.
         return buffer(bObj, offset) + b"".join(bArray)
 
-# class Connector2(Port2):
-
-#     def doConnect(self, fd=None):
-#         if not fd:
-#             self.socket = self.createInternetSocket()
-#             self.fileno = self.socket.fileno
-#             self.socket.connect_ex(self._connectedAddr)
-#             self._connectDone()
-#             return
-
-#         self._read(fd, self._connectedAddr)
-
-#     def doRead(self, fd=None):
-#         why = Port.doRead(self, self.socket.UDTSOCKET, self._connectedAddr)
-#         #FIXME
-#         if why:
-#             if (why[0] == ECONNLOST):
-#                 self.stopListening()
-#         return why
-
 
 @implementer(interfaces.ITCPTransport, interfaces.ISystemHandle)
 class Connection(abstract.FileDescriptor, tcp._AbortingMixin):
     @ivar logstr: prefix used when logging events related to this connection.
     @type logstr: C{str}
     """
-    _ttl = -1
-    _inorder = True
+    messageBuffer = deque()
     def _closeSocket(self, orderly):
         try:
             self.socket.close()
             data = udt.recvmsg(self.socket.UDTSOCKET, self.bufferSize)
         except udt.UDTException as ue:
             if ue[0] == EASYNCRCV:
+                #restart socket
+                ein = self.reactor._POLL_IN
+                self.reactor._poller.remove_usock(self.socket.UDTSOCKET)
+                self.reactor._poller.add_usock(self.socket.UDTSOCKET, ein)
                 return
             else:
                 return main.CONNECTION_LOST
         if not self.connected or self._writeDisconnected:
             return
         if data:
-            # self._tempDataBuffer.append(data)
-            # self._tempDataLen += len(data)
-            # self._ttl = ttl
-            # self._inorder = inorder
-            # self._maybePauseProducer()
-            self.startWriting()
-            l = self.writeSomeData(data, ttl, inorder)
+            self.messageBuffer.append([data, ttl, inorder])
+            #self._maybePauseProducer()
+            #self.startWriting()
+            #Really start writable event
+            try:
+                self.reactor._poller.add_usock(self.socket.UDTSOCKET,
+                                               self.reactor._POLL_OUT)
+            except udt.UDTException as ue:
+                log.msg("Error while writing:{0}".format(ue))
+                self.abortConnection()
+
+
+    _messagesAtOnce = 1024
+
+    def splitAndSend(self):
+        """
+        Split and send messages to the other side.
+        """
+        for i in xrange(self._messagesAtOnce):
+            try:
+                message, ttl, inorder = self.messageBuffer.popleft()
+            except IndexError:
+                break
+            l = self.writeSomeData(message, ttl, inorder)
+            if isinstance(l, Exception) or l < 0:
+                return l
+            #FIXME Producers are probably NOT working
+            # If there is nothing left to send,
             if l == main.CONNECTION_LOST:
                 self.loseConnection()
-            
+                return main.CONNECTION_LOST
+            elif self.disconnecting:
+                # But if I was previously asked to
+                #let the connection die, do
+                # so.
+                return self._postLoseConnection()
+            elif self._writeDisconnecting:
+                # I was previously asked to half-close the connection.  We
+                # set _writeDisconnected before calling handler, in case the
+                # handler calls loseConnection(), which
+                #will want to check for
+                # this attribute.
+                self._writeDisconnected = True
+                result = self._closeWriteConnection()
+                return result
+
+        return None
+        
 
     def doWrite(self):
         """
-        Called when data can be written.
-
+        Called when data can be written. It will send all messages recorded
+        in the buffer in a non-blocking way.
         @return: C{None} on success, an exception or a negative integer on
             failure.
 
         @see: L{twisted.internet.interfaces.IWriteDescriptor.doWrite}.
         """
-        
-        if len(self.dataBuffer) - self.offset < self.SEND_LIMIT:
-            # If there is currently less than SEND_LIMIT bytes left to send
-            # in the string, extend it with the array data.
-            self.dataBuffer = _concatenate(
-                self.dataBuffer, self.offset, self._tempDataBuffer)
-            self.offset = 0
-            self._tempDataBuffer = []
-            self._tempDataLen = 0
 
         # Send as much data as you can.
-        if self.dataBuffer == '':
-            return
-        if self.offset:
-            l = self.writeSomeData(lazyByteSlice(self.dataBuffer, self.offset),
-                                   self._ttl, self._inorder)
-        else:
-            l = self.writeSomeData(self.dataBuffer, self._ttl, self._inorder)
-
-        # There is no writeSomeData implementation in Twisted which returns
-        # < 0, but the documentation for writeSomeData used to claim negative
-        # integers meant connection lost.  Keep supporting this here,
-        # although it may be worth deprecating and removing at some point.
-        if isinstance(l, Exception) or l < 0:
-            return l
-        self.offset += l
-        # If there is nothing left to send,
-        if self.offset == len(self.dataBuffer) and not self._tempDataLen:
-            self.dataBuffer = b""
-            self.offset = 0
-            # stop writing.
-            self.stopWriting()
-            # If I've got a producer who is supposed to supply me with data,
-            if self.producer is not None and ((not self.streamingProducer)
-                                              or self.producerPaused):
-                # tell them to supply some more.
-                self.producerPaused = 0
-                self.producer.resumeProducing()
-            elif self.disconnecting:
-                # But if I was previously asked to let the connection die, do
-                # so.
-                return self._postLoseConnection()
-            elif self._writeDisconnecting:
-                # I was previously asked to half-close the connection.  We
-                # set _writeDisconnected before calling handler, in case the
-                # handler calls loseConnection(), which will want to check for
-                # this attribute.
-                self._writeDisconnected = True
-                result = self._closeWriteConnection()
-                return result
-        return None
+        if len(self.messageBuffer) == 0:
+            return None
+        result = self.splitAndSend()
+        if len(self.messageBuffer) == 0:
+            #self.stopWriting()
+            #Really stop writable event
+            self.reactor._poller.remove_usock(self.socket.UDTSOCKET)
+            self.reactor._poller.add_usock(self.socket.UDTSOCKET,
+                                           self.reactor._POLL_IN)
+        return result
 
 
     def _closeWriteConnection(self):
             self.failIfNotConnected(error.getConnectError((
                         staus)))
             return
+        elif status == udt.UDTSTATUS_CONNECTED:
+            #Check for errors
+            #We're connected, finish the connection
+            del self.doWrite
+            del self.doRead
+            # we first stop and then start, to reset
+            #any references to the old doRead
+            self.startReading()
+            self._connectDone()
+            return
 
         # doConnect gets called twice.  The first time we actually need to
         # start the connection attempt.  The second time we don't really
         # is not /particularly/ detrimental to do so.  This should get
         # cleaned up some day, though.
         try:
-            connectResult = self.socket.connect_ex(self.realAddress)
+            connectResult = self.socket.connect(self.realAddress)
         except udt.UDTException as ue:
             connectResult = ue[0]
+
+        #TODO
         if connectResult:
-            if connectResult == udt.EISCONN:
-                pass
-            elif connectResult in (EASYNCRCV,):
+            if connectResult in (EASYNCRCV,):
+                #We're starting to connect to each other
                 self.startReading()
-                self.startWriting()
+                # self.startWriting()
                 return
             else:
                 self.failIfNotConnected(error.getConnectError((
                             connectResult, connectResult)))
                 return
-
-
-
-        status = self.socket.getsockopt(udt.UDT_STATE)
-        if status == udt.UDTSTATUS_CONNECTED:
-            # If I have reached this point without raising
-            #or returning, that means
-            # that the socket is connected.
-            del self.doWrite
-            del self.doRead
-            # we first stop and then start, to reset
-            #any references to the old doRead
-            self.startReading()
-            self.startWriting()
-            self._connectDone()
         else:
-            # If I have reached this point without raising
-            #or returning, that means
-            # that the socket is connected.
-            del self.doWrite
-            del self.doRead
-            # we first stop and then start, to reset
-            #any references to the old doRead
-            #self.startReading()
-            self.startWriting()
+            #FIXME but it works for now
+            opt = self.socket.getsockopt(udt.UDT_STATE)
+            if opt == udt.UDTSTATUS_CONNECTING:
+                #add monitoring to the reactor
+                self.startReading()
+                self.startWriting()
+                self.reactor._poller.add_usock(self.socket.UDTSOCKET,
+                                               self.reactor._POLL_OUT)
+            elif opt == udt.UDTSTATUS_CONNECTED:
+                #Check for errors
+                #We're connected, finish the connection
+                del self.doWrite
+                del self.doRead
+                # we first stop and then start, to reset
+                #any references to the old doRead
+                self.startReading()
+                self._connectDone()
+                return
 
     def _connectDone(self):
         """
                 self.stopReading()
                 self.stopWriting()
                 self.startReading()
-                self.startWriting()
+                #self.startWriting()
                 return
             Connection.doWrite(self)
 

udt4twisted/udtepollreactor.py

             # this method in this file.
             if fd in other:
                 flags |= antievent
-                #FIXME for now remove and add again
+                #FIXME do nothing
                 if self._isUDT(xer):
-                    self._poller.remove_usock(fd)
-                    self._poller.add_usock(fd, flags)
+                    # self._poller.remove_usock(fd)
+                    # self._poller.add_usock(fd, flags)
+                    pass
                 else:
                     self._poller.remove_ssock(fd)
                     self._poller.add_ssock(fd, flags)
         try:
             #doesn't work with floats :/
             l = self._poller.wait(True, True, int(timeout*1000), True, True)
-        except IOError as err:
-            if err.errno == errno.EINTR:
+        except UDTException as ue:
+            if ue[0] == 6003:
                 return
-            raise
         #handle system sockets
         sread, swrite = l[2:]
+        #print sread, swrite
         self._handleSystemSocketSet(sread, self._POLL_IN)
         self._handleSystemSocketSet(swrite, self._POLL_OUT)
 
                         # disconnect us.
                         why = selectable.doWrite()
                         inRead = False
-                        if self._isUDT(selectable):
-                            gc.collect()
+                        # if self._isUDT(selectable):
+                        #     gc.collect()
+
             except:
                 # Any exception from application code gets logged and will
                 # cause us to disconnect the selectable.
                 why = sys.exc_info()[1]
                 log.err()
         if why:
-            if isinstance(fd, udt4.UDTSOCKET):
-                gc.collect()
             self._disconnectSelectable(selectable, why, inRead)
 
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.