Bläddra i källkod

Removed even more code to remove the ID propagation

Yentl Van Tendeloo 8 år sedan
förälder
incheckning
c659d7e84b

+ 2 - 2
hybrid_server/classes/socket.xml

@@ -80,8 +80,8 @@
                     <transition event="HTTP_input" target=".">
                         <parameter name="data"/>
                         <script>
-                            #post_data = "&amp;".join(["%s=%s" % (urllib.quote(k), urllib.quote(v)) for k, v in data.iteritems()])
-                            post_data = "&amp;".join(["%s=%s" % (k, v) for k, v in data.iteritems()])
+                            #post_data = "&amp;".join(["%s=%s" % (k, v) for k, v in data.iteritems()])
+                            post_data = data
                             self.send_data += "HTTP/1.0 200 OK\r\n"
                             self.send_data += "Content-Length: %s\r\n" % len(post_data)
                             self.send_data += "Content-Type: %s; charset=UTF-8\r\n" % "text/plain"

+ 19 - 40
interface/HUTN/hutn_compiler/constructors_object_visitor.py

@@ -2,6 +2,7 @@ from constructors_visitor import ConstructorsVisitor
 
 import urllib
 import urllib2
+import json
 
 timeout = 100
 
@@ -23,13 +24,16 @@ class ConstructorsObjectVisitor(ConstructorsVisitor):
         self.hash_file = md5.hexdigest()
 
         # Check if file is already compiled (with same hash) in Modelverse
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.username, "username": "user_manager"}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '3', "username": self.username}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"is_defined"', "username": self.username}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.obj_file, "username": self.username}))).read()
+        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "value": '"%s"' % self.username, "username": "user_manager"}))).read()
+
+        def flush_data(data):
+            if data:
+                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": self.username})), timeout=timeout).read()
+            return []
+
+        flush_data(['3', '"is_defined"', '"%s"' % self.obj_file])
 
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
-        v = v.split("=", 2)[2]
         simple_filename = self.real_file.rsplit("/")[-1]
         if v == "None":
             # Not defined, so recompile
@@ -40,9 +44,7 @@ class ConstructorsObjectVisitor(ConstructorsVisitor):
                 print("[COMPILE] %s" % simple_filename)
 
                 # Remove in Modelverse and recompile
-                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '3', "username": self.username}))).read()
-                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"remove_obj"', "username": self.username}))).read()
-                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.obj_file, "username": self.username}))).read()
+                flush_data(['3', '"remove_obj"', '"%s"' % self.obj_file])
             else:
                 self.visit = lambda i: i
                 self.dump = lambda: True
@@ -51,53 +53,30 @@ class ConstructorsObjectVisitor(ConstructorsVisitor):
     def dump(self):
         v = ConstructorsVisitor.dump(self)
 
-        import json
-        # Set up interface
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '3', "username": self.username}))).read()
-
-        # Start uploading the code
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"upload"', "username": self.username}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.obj_file, "username": self.username}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.hash_file, "username": self.username}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": 'true', "username": self.username}))).read() # Use new interface
 
         def flush_data(data):
             if data:
                 urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": self.username})), timeout=timeout).read()
             return []
 
-        var_list = {}
-        data = []
-        for p in v:
-            if isinstance(p, int):
-                if p not in var_list:
-                    data = flush_data(data)
-                    val = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username})), timeout=timeout).read()
-                    val = val.split("=", 2)[1].split("&", 1)[0]
-                    var_list[p] = val
-                    continue
-                else:
-                    val = var_list[p]
-                    t = "R"
-            else:
-                val = p
-                t = "V"
-            data.append([t, val])
-        data = flush_data(data)
+        # Set up interface
+        flush_data(['3', '"upload"', '"%s"' % self.obj_file, '"%s"' % self.hash_file, 'true'])
+        flush_data(v)
 
         # Upload symbol table
         data = []
         for e, v in self.object_symbols.iteritems():
-            data.append(["V", "true"])
-            data.append(["V", '"%s"' % e])
-            data.append(["V", "true" if v else "false"])
+            data.append("true")
+            data.append('"%s"' % e)
+            data.append("true" if v else "false")
+
         urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": self.username}))).read()
 
         # Finish the symbol table
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": 'false', "username": self.username}))).read()
+        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "value": 'false', "username": self.username}))).read()
 
         # Wait for kernel to signal that it finished
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '2', "username": self.username}))).read()
+        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "value": '2', "username": self.username}))).read()
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
         v = v.split("=", 2)[2]
         if v == "DONE":

+ 14 - 18
interface/HUTN/hutn_compiler/primitives_object_visitor.py

@@ -24,9 +24,8 @@ class PrimitivesObjectVisitor(PrimitivesVisitor):
 
         # Check if file is already compiled (with same hash) in Modelverse
         urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.username, "username": "user_manager"}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '3', "username": self.username}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"is_defined"', "username": self.username}))).read()
-        urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.obj_file, "username": self.username}))).read()
+
+        flush_data(['3', '"is_defined"', '"%s"' % self.obj_file])
 
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
         v = v.split("=", 2)[2]
@@ -40,9 +39,7 @@ class PrimitivesObjectVisitor(PrimitivesVisitor):
                 print("[COMPILE] %s" % simple_filename)
 
                 # Remove in Modelverse and recompile
-                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '3', "username": self.username}))).read()
-                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"remove_obj"', "username": self.username}))).read()
-                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % self.obj_file, "username": self.username}))).read()
+                flush_data(['3', '"remove_obj"', '"%s"' % self.obj_file])
             else:
                 self.visit = lambda i: i
                 self.dump = lambda: True
@@ -53,30 +50,29 @@ class PrimitivesObjectVisitor(PrimitivesVisitor):
         data = []
 
         # Set up interface
-        data.append(["V", "3"])
+        data.append("3")
 
         # Start uploading the code
-        data.append(["V", '"upload"'])
-        data.append(["V", '"%s"' % (self.obj_file)])
-        data.append(["V", '"%s"' % (self.hash_file)])
-        data.append(["V", 'false'])
-        data.append(["V", json.dumps(v)])
+        data.append('"upload"')
+        data.append('"%s"' % (self.obj_file))
+        data.append('"%s"' % (self.hash_file))
+        data.append('false')
+        data.append(json.dumps(v))
 
         # Upload symbol table
         for e, v in self.object_symbols.iteritems():
-            data.append(["V", "true"])
-            data.append(["V", '"%s"' % e])
-            data.append(["V", "true" if v else "false"])
+            data.append("true")
+            data.append('"%s"' % e)
+            data.append("true" if v else "false")
 
         # Finish the symbol table
-        data.append(["V", 'false'])
+        data.append('false')
 
         # Wait for kernel to signal that it finished
-        data.append(["V", '2'])
+        data.append('2')
 
         urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": self.username}))).read()
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
-        v = v.split("=", 2)[2]
         if v == "DONE":
             return True
         else:

+ 1 - 1
scripts/compile.py

@@ -6,7 +6,7 @@ import subprocess
 def do_compile(address, filename, username, modulename, mode, optionals=[], grammar="grammars/actionlanguage.g"):
     filename = os.path.realpath(filename)
     try:
-        urllib2.urlopen(urllib2.Request(address, 'op=set_input&username=user_manager&element_type=V&value="%s"' % username)).read()
+        urllib2.urlopen(urllib2.Request(address, 'op=set_input&username=user_manager&value="%s"' % username)).read()
         subprocess.check_call([sys.executable, "hutn_compiler/compiler.py", filename, grammar, mode, username, modulename, filename, address] + optionals, cwd="interface/HUTN")
     except urllib2.URLError:
         return 2

+ 6 - 6
scripts/execute_model.py

@@ -28,14 +28,14 @@ def initialize_SCD():
     import urllib
     import json
     username = random.random()
-    urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % username, "username": "user_manager"}))).read()
+    urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % username, "username": "user_manager"}))).read()
 
     data = []
-    data.append(["V", '4'])
-    data.append(["V", '"initialize_SCD"'])
-    data.append(["V", '"models/SimpleClassDiagrams"'])
-    data.append(["V", '"exit"'])
-    data.append(["V", '2'])
+    data.append('4')
+    data.append('"initialize_SCD"')
+    data.append('"models/SimpleClassDiagrams"')
+    data.append('"exit"')
+    data.append('2')
 
     print("Initializing SCD")
     urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username}))).read()

+ 1 - 1
scripts/link_and_load.py

@@ -2,7 +2,7 @@ import sys
 import urllib2
 
 def link_and_load(address, username, objs):
-    urllib2.urlopen(urllib2.Request(address, 'op=set_input&username=user_manager&element_type=V&value="%s"' % username)).read()
+    urllib2.urlopen(urllib2.Request(address, 'op=set_input&username=user_manager&value="%s"' % username)).read()
 
     sys.path.append("interface/HUTN")
     from hutn_compiler.linker import link

+ 3 - 25
scripts/prompt.py

@@ -12,29 +12,7 @@ from hutn_compiler.compiler import main as hutn_compile
 memory = {}
 
 def send_data(commands, address, username):
-    def flush_data(data):
-        if data:
-            urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username}))).read()
-        return []
-
-    var_list = {}
-    data = []
-    for p in v:
-        if isinstance(p, int):
-            if p not in var_list:
-                data = flush_data(data)
-                val = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()
-                val = val.split("=", 2)[1].split("&", 1)[0]
-                var_list[p] = val
-                continue
-            else:
-                val = var_list[p]
-                t = "R"
-        else:
-            val = p
-            t = "V"
-        data.append([t, val])
-    flush_data(data)
+    urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(commands), "username": username}))).read()
 
 def local_print(string):
     if os.name == "posix":
@@ -62,8 +40,8 @@ if username == "":
 else:
     username = username.strip()
 
-# If user shouldn't exist yet, we create it
-urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "element_type": "V", "value": '"%s"' % username, "username": "user_manager"}))).read()
+# If user doesn't exist yet, we create it
+urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % username, "username": "user_manager"}))).read()
 
 local_print("Switching context to Modelverse: all data is piped.")
 local_print("Use command $ to switch to HUTN parsing mode.")