ns-3 test passing
[nepi.git] / src / nepi / resources / linux / ns3 / ns3client.py
index 76a37bf..2263197 100644 (file)
@@ -48,12 +48,16 @@ class LinuxNS3Client(NS3Client):
                 self.simulation.local_socket,
                 self.simulation.remote_socket) 
 
-    def send_msg(self, msg, *args):
+    def send_msg(self, msg, *args, **kwargs):
         args = list(args)
-
+             
         sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
         sock.connect(self.simulation.local_socket)
 
+        timeout = kwargs.get("timeout")
+        if timeout:
+             sock.settimeout(timeout)
+
         args.insert(0, msg)
         def encode(arg):
             arg = cPickle.dumps(arg)
@@ -61,60 +65,63 @@ class LinuxNS3Client(NS3Client):
 
         encoded = "|".join(map(encode, args))
         sock.send("%s\n" % encoded)
-        
+       
         reply = sock.recv(1024)
         return cPickle.loads(base64.b64decode(reply))
 
-    def create(self, clazzname, *args):
+    def create(self, clazzname, *args, **kwargs):
         args = list(args)
         args.insert(0, clazzname)
         
-        return self.send_msg(NS3WrapperMessage.CREATE, *args)
+        return self.send_msg(NS3WrapperMessage.CREATE, *args, **kwargs)
 
     def factory(self, type_name, **kwargs):
         args = [type_name]
         args.append(kwargs)
         
-        return self.send_msg(NS3WrapperMessage.FACTORY, *args)
+        return self.send_msg(NS3WrapperMessage.FACTORY, *args, **kwargs)
 
-    def invoke(self, uuid, operation, *args):
+    def invoke(self, uuid, operation, *args, **kwargs):
         args = list(args)
         args.insert(0, operation)
         args.insert(0, uuid)
 
-        return self.send_msg(NS3WrapperMessage.INVOKE, *args)
+        return self.send_msg(NS3WrapperMessage.INVOKE, *args, **kwargs)
 
-    def set(self, uuid, name, value):
+    def set(self, uuid, name, value, **kwargs):
         args = [uuid, name, value]
 
-        return self.send_msg(NS3WrapperMessage.SET, *args)
+        return self.send_msg(NS3WrapperMessage.SET, *args, **kwargs)
 
-    def get(self, uuid, name):
+    def get(self, uuid, name, **kwargs):
         args = [uuid, name]
 
-        return self.send_msg(NS3WrapperMessage.GET, *args)
+        return self.send_msg(NS3WrapperMessage.GET, *args, **kwargs)
 
-    def enable_trace(self, *args):
-        return self.send_msg(NS3WrapperMessage.ENABLE_TRACE, *args)
+    def enable_trace(self, *args, **kwargs):
+        return self.send_msg(NS3WrapperMessage.ENABLE_TRACE, *args, **kwargs)
 
-    def flush(self):
-        return self.send_msg(NS3WrapperMessage.FLUSH, [])
+    def flush(self, **kwargs):
+        args = []
+        return self.send_msg(NS3WrapperMessage.FLUSH, *args, **kwargs)
 
-    def start(self):
-        return self.send_msg(NS3WrapperMessage.START, [])
+    def start(self, **kwargs):
+        args = []
+        return self.send_msg(NS3WrapperMessage.START, *args, **kwargs)
 
-    def stop(self, time = None):
+    def stop(self, **kwargs):
         args = []
-        if time:
-            args.append(time)
+        time = kwargs.get("time")
+        if time: args.append(time)
 
-        return self.send_msg(NS3WrapperMessage.STOP, *args)
+        return self.send_msg(NS3WrapperMessage.STOP, *args, **kwargs)
 
-    def shutdown(self):
+    def shutdown(self, **kwargs):
+        args = []
         ret = None
 
         try:
-            ret = self.send_msg(NS3WrapperMessage.SHUTDOWN, [])
+            ret = self.send_msg(NS3WrapperMessage.SHUTDOWN, *args, **kwargs)
         except:
             pass