OLD | NEW |
1 package api | 1 package api |
2 | 2 |
3 import ( | 3 import ( |
4 "code.google.com/p/go.net/websocket" | 4 "code.google.com/p/go.net/websocket" |
5 "crypto/tls" | 5 "crypto/tls" |
6 "encoding/json" | 6 "encoding/json" |
7 "io" | 7 "io" |
8 "launchpad.net/juju-core/log" | 8 "launchpad.net/juju-core/log" |
9 "launchpad.net/juju-core/rpc" | 9 "launchpad.net/juju-core/rpc" |
10 "launchpad.net/juju-core/state" | 10 "launchpad.net/juju-core/state" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 for _ = range msgs { | 100 for _ = range msgs { |
101 } | 101 } |
102 }() | 102 }() |
103 return srv.rpcSrv.ServeCodec(&serverCodec{ | 103 return srv.rpcSrv.ServeCodec(&serverCodec{ |
104 srv: srv, | 104 srv: srv, |
105 conn: conn, | 105 conn: conn, |
106 msgs: msgs, | 106 msgs: msgs, |
107 }, newStateServer(srv, conn)) | 107 }, newStateServer(srv, conn)) |
108 } | 108 } |
109 | 109 |
| 110 var logRequests = true |
| 111 |
110 func readRequests(conn *websocket.Conn, c chan<- serverReq) { | 112 func readRequests(conn *websocket.Conn, c chan<- serverReq) { |
111 defer close(c) | 113 defer close(c) |
112 var req serverReq | 114 var req serverReq |
113 for { | 115 for { |
| 116 var err error |
114 req = serverReq{} // avoid any potential cross-message contamina
tion. | 117 req = serverReq{} // avoid any potential cross-message contamina
tion. |
115 » » err := websocket.JSON.Receive(conn, &req) | 118 » » if logRequests { |
| 119 » » » var m json.RawMessage |
| 120 » » » err = websocket.JSON.Receive(conn, &m) |
| 121 » » » if err == nil { |
| 122 » » » » log.Debugf("api: <- %s", m) |
| 123 » » » » err = json.Unmarshal(m, &req) |
| 124 » » » } else { |
| 125 » » » » log.Debugf("api: <- error: %v", err) |
| 126 » » » } |
| 127 » » } else { |
| 128 » » » err = websocket.JSON.Receive(conn, &req) |
| 129 » » } |
116 if err == io.EOF { | 130 if err == io.EOF { |
117 break | 131 break |
118 } | 132 } |
119 if err != nil { | 133 if err != nil { |
120 log.Printf("api: error receiving request: %v", err) | 134 log.Printf("api: error receiving request: %v", err) |
121 break | 135 break |
122 } | 136 } |
123 c <- req | 137 c <- req |
124 } | 138 } |
125 } | 139 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 } | 177 } |
164 | 178 |
165 func (c *serverCodec) ReadRequestBody(body interface{}) error { | 179 func (c *serverCodec) ReadRequestBody(body interface{}) error { |
166 if body == nil { | 180 if body == nil { |
167 return nil | 181 return nil |
168 } | 182 } |
169 return json.Unmarshal(c.req.Params, body) | 183 return json.Unmarshal(c.req.Params, body) |
170 } | 184 } |
171 | 185 |
172 func (c *serverCodec) WriteResponse(resp *rpc.Response, body interface{}) error
{ | 186 func (c *serverCodec) WriteResponse(resp *rpc.Response, body interface{}) error
{ |
173 » return websocket.JSON.Send(c.conn, &serverResp{ | 187 » r := &serverResp{ |
174 RequestId: resp.RequestId, | 188 RequestId: resp.RequestId, |
175 Error: resp.Error, | 189 Error: resp.Error, |
176 Response: body, | 190 Response: body, |
177 » }) | 191 » } |
| 192 » if logRequests { |
| 193 » » data, err := json.Marshal(r) |
| 194 » » if err != nil { |
| 195 » » » log.Debugf("api: -> marshal error: %v", err) |
| 196 » » » return err |
| 197 » » } |
| 198 » » log.Debugf("api: -> %s", data) |
| 199 » } |
| 200 » return websocket.JSON.Send(c.conn, r) |
178 } | 201 } |
OLD | NEW |