fixed a problem where bytes and strings are the suck
[goDBhammer.git] / src / webconnector.go
index a579966..57a832e 100644 (file)
@@ -8,55 +8,65 @@ import (
        "io";
        //"./dbibridge";
        "./benchcontroller";
+       //"dbconnector";
+       "bytes";
        "fmt";
+       "json";
+       //"strings";
 )
 
-var comin chan int;
-var comout chan int;
+type JSONStatData struct {
+       currentJob int; // 1 = nothing, 2 = have database login, 3 = createing data, 4 = running test, 5 = finished
+       currentStatus int; // percent complete
+}
 
-// hello world, the web server
-func ServerResponder(c *http.Conn, req *http.Request) {
-       //comout <- 2;
-       //comout <- 3;
-       //comout <- 1;
-       fmt.Printf("lk: %s %s %s\n", req.Method, req.RawURL, req.URL); 
-       if req.RawURL == "/" {
-               mainPage(c, req);
-       }
+
+//type DBDataPost struct {
+//}
+
+var comin chan string;
+var cominstatus chan string;
+var comout chan string;
+
+var stat int;
+
+func JSONResponder(c *http.Conn, req *http.Request)
+{
+       //stat := <- cominstatus;
        
-       if req.RawURL == "/setup" {
-               setupPage(c, req);
+       if(req.Method == "GET") {
+       
+               j, _, _ := json.StringToJson(fmt.Sprintf("{\"status\":%d, \"complete\":90}", stat));
+               
+               io.WriteString(c, fmt.Sprintf("%s\n", json.JsonToString(j)));
+               fmt.Printf("i got a get\n");
+       }
+       if(req.Method == "POST") {
+               ll := make([]byte, 1048576);
+               nc,_ := req.Body.Read(ll);
+               lp := make([]byte, nc);
+               bytes.Copy(lp, ll);
+               fmt.Printf("i got a post...%s\n", string(lp));
+               //http.Redirect(c, "/", 301);
+               s,g,es := json.StringToJson(string(lp));
+               //s,g,es = json.StringToJson("[{\"name\":\"dbtype\",\"value\":\"a\"},{\"name\":\"dbhost\",\"value\":\"a\"},{\"name\":\"dbuser\",\"value\":\"a\"},{\"name\":\"dbpass\",\"value\":\"a\"},{\"name\":\"dbname\",\"value\":\"a\"},{\"name\":\"datamult\",\"value\":\"1\"},{\"name\":\"nclients\",\"value\":\"2\"}]");
+               //fmt.Printf("\n[{\"name\":\"dbtype\",\"value\":\"a\"},{\"name\":\"dbhost\",\"value\":\"a\"},{\"name\":\"dbuser\",\"value\":\"a\"},{\"name\":\"dbpass\",\"value\":\"a\"},{\"name\":\"dbname\",\"value\":\"a\"},{\"name\":\"datamult\",\"value\":\"1\"},{\"name\":\"nclients\",\"value\":\"2\"}]'\n%s'\n", tkl[0]);
+               s2 := s.Get("name");
+               
+               if(g) {
+                       fmt.Printf("true");
+               } else {
+                       fmt.Printf("false '%s' %d\n", es, len(es));
+               }
+               
+               fmt.Printf("erg: %d\n", s2.Kind());
+               fmt.Printf("erg: %s\n", s2.String());
+               fmt.Printf("i got a post...%s and its\n", (string)(lp));
+               stat = 2;
        }
        
-       // fucking go, i just wanna consume the incoming data, but it forces me to do something with it... cunt of a language
-       //k := <- comin;
-       //fmt.Printf("%d\n", k);
 }
 
-func setupPage(c *http.Conn, req *http.Request)
-{
-       header(c);
-       io.WriteString(c, "I am a setup page");
-       footer(c);
-}
-
-func mainPage(c *http.Conn, req *http.Request)
-{
-       header(c);
-       io.WriteString(c, "<h1>goDBHammer</h1><br>");
-       io.WriteString(c, "Welcome to goDBHammer, the go based database benchmarking tool<br>");
-       io.WriteString(c, "<form method=\"post\" action=\"/setup\">");
-       io.WriteString(c, "<table><tr><td>Database Host</td><td><input type=\"text\" name=\"dbhost\"></td></tr>");
-       io.WriteString(c, "<tr><td>Database User</td><td><input type=\"text\" name=\"dbuser\"></td></tr>");
-       io.WriteString(c, "<tr><td>Database Password</td><td><input type=\"text\" name=\"dbpass\"></td></tr>");
-       io.WriteString(c, "<tr><td>Database</td><td><input type=\"text\" name=\"dbname\"></td></tr>");  
-       io.WriteString(c, "<tr><td>Number of Clients</td><td><input type=\"text\" name=\"nthreads\"></td></tr>");       
-       io.WriteString(c, "<tr><td><input type=\"submit\" name=\"Setup\" value=\"Setup\"></td></tr>");
-       io.WriteString(c, "</table>");
-       io.WriteString(c, "</form>");
-       fmt.Printf("%s\n", req.FormValue("dbhost"));
-       footer(c);
-}
 
 func header(c *http.Conn)
 {
@@ -68,24 +78,20 @@ func footer(c *http.Conn)
        io.WriteString(c, "</body></html>");
 }
 
-func main() {
-
-       //var Dbconn *dbibridge.DBIConnection;
-       
-       //Dbconn = dbibridge.DBICreate();
-       
-       //dbibridge.DBIConnect(Dbconn, "mysql", "localhost", "root", "password", "zm");
-       //dbibridge.ExecSQL(Dbconn, "create table asdf (asdf int)");
-       //dbibridge.DBIDisconnect(Dbconn);
+func main()
+{
+       comin = make(chan string);
+       cominstatus = make(chan string);
+       comout = make(chan string);
        
-       comin = make(chan int);
-       comout = make(chan int);
+       stat = 1;
        
        bc := benchcontroller.CreateController();
-       go benchcontroller.MainLoop(bc, comout, comin);
+       go benchcontroller.MainLoop(bc, comout, comin, cominstatus);
        
-       http.Handle("/", http.HandlerFunc(ServerResponder));
-       err := http.ListenAndServe(":12345", nil);
+       http.Handle("/", http.FileServer("./web/", "/"));
+       http.Handle("/json", http.HandlerFunc(JSONResponder));
+       err := http.ListenAndServe(":22222", nil);
        if err != nil {
                panic("ListenAndServe: ", err.String())
        }