fixed a problem where bytes and strings are the suck
[goDBhammer.git] / src / webconnector.go
1 // im a web connector
2
3 package main
4
5
6 import (
7         "http";
8         "io";
9         //"./dbibridge";
10         "./benchcontroller";
11         //"dbconnector";
12         "bytes";
13         "fmt";
14         "json";
15         //"strings";
16 )
17
18 type JSONStatData struct {
19         currentJob int; // 1 = nothing, 2 = have database login, 3 = createing data, 4 = running test, 5 = finished
20         currentStatus int; // percent complete
21 }
22
23
24 //type DBDataPost struct {
25 //}
26
27 var comin chan string;
28 var cominstatus chan string;
29 var comout chan string;
30
31 var stat int;
32
33 func JSONResponder(c *http.Conn, req *http.Request)
34 {
35         //stat := <- cominstatus;
36         
37         if(req.Method == "GET") {
38         
39                 j, _, _ := json.StringToJson(fmt.Sprintf("{\"status\":%d, \"complete\":90}", stat));
40                 
41                 io.WriteString(c, fmt.Sprintf("%s\n", json.JsonToString(j)));
42                 fmt.Printf("i got a get\n");
43         }
44         if(req.Method == "POST") {
45                 ll := make([]byte, 1048576);
46                 nc,_ := req.Body.Read(ll);
47                 lp := make([]byte, nc);
48                 bytes.Copy(lp, ll);
49                 fmt.Printf("i got a post...%s\n", string(lp));
50                 //http.Redirect(c, "/", 301);
51                 s,g,es := json.StringToJson(string(lp));
52                 //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\"}]");
53                 //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]);
54                 s2 := s.Get("name");
55                 
56                 if(g) {
57                         fmt.Printf("true");
58                 } else {
59                         fmt.Printf("false '%s' %d\n", es, len(es));
60                 }
61                 
62                 fmt.Printf("erg: %d\n", s2.Kind());
63                 fmt.Printf("erg: %s\n", s2.String());
64                 fmt.Printf("i got a post...%s and its\n", (string)(lp));
65                 stat = 2;
66         }
67         
68 }
69
70
71 func header(c *http.Conn)
72 {
73         io.WriteString(c, "<html><head></head><body>");
74 }
75
76 func footer(c *http.Conn)
77 {
78         io.WriteString(c, "</body></html>");
79 }
80
81 func main()
82 {
83         comin = make(chan string);
84         cominstatus = make(chan string);
85         comout = make(chan string);
86         
87         stat = 1;
88         
89         bc := benchcontroller.CreateController();
90         go benchcontroller.MainLoop(bc, comout, comin, cominstatus);
91         
92         http.Handle("/", http.FileServer("./web/", "/"));
93         http.Handle("/json", http.HandlerFunc(JSONResponder));
94         err := http.ListenAndServe(":22222", nil);
95         if err != nil {
96                 panic("ListenAndServe: ", err.String())
97         }
98
99 }