OLD | NEW |
1 // Copyright 2013 Canonical Ltd. | 1 // Copyright 2013 Canonical Ltd. |
2 // Licensed under the AGPLv3, see LICENCE file for details. | 2 // Licensed under the AGPLv3, see LICENCE file for details. |
3 | 3 |
4 package apiserver | 4 package apiserver |
5 | 5 |
6 import ( | 6 import ( |
7 "code.google.com/p/go.net/websocket" | 7 "code.google.com/p/go.net/websocket" |
8 "crypto/tls" | 8 "crypto/tls" |
9 "launchpad.net/juju-core/log" | 9 "launchpad.net/juju-core/log" |
10 "launchpad.net/juju-core/rpc" | 10 "launchpad.net/juju-core/rpc" |
11 "launchpad.net/juju-core/rpc/jsoncodec" | 11 "launchpad.net/juju-core/rpc/jsoncodec" |
12 "launchpad.net/juju-core/state" | 12 "launchpad.net/juju-core/state" |
| 13 "launchpad.net/juju-core/state/apiserver/common" |
13 "launchpad.net/tomb" | 14 "launchpad.net/tomb" |
14 "net" | 15 "net" |
15 "net/http" | 16 "net/http" |
16 "sync" | 17 "sync" |
17 ) | 18 ) |
18 | 19 |
19 // Server holds the server side of the API. | 20 // Server holds the server side of the API. |
20 type Server struct { | 21 type Server struct { |
21 tomb tomb.Tomb | 22 tomb tomb.Tomb |
22 wg sync.WaitGroup | 23 wg sync.WaitGroup |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 http.Serve(lis, handler) | 90 http.Serve(lis, handler) |
90 } | 91 } |
91 | 92 |
92 // Addr returns the address that the server is listening on. | 93 // Addr returns the address that the server is listening on. |
93 func (srv *Server) Addr() string { | 94 func (srv *Server) Addr() string { |
94 return srv.addr.String() | 95 return srv.addr.String() |
95 } | 96 } |
96 | 97 |
97 func (srv *Server) serveConn(wsConn *websocket.Conn) error { | 98 func (srv *Server) serveConn(wsConn *websocket.Conn) error { |
98 conn := rpc.NewConn(jsoncodec.NewWebsocket(wsConn)) | 99 conn := rpc.NewConn(jsoncodec.NewWebsocket(wsConn)) |
| 100 serverError := func(err error) error { |
| 101 if err := common.ServerError(err); err != nil { |
| 102 return err |
| 103 } |
| 104 return nil |
| 105 } |
99 if err := conn.Serve(newStateServer(srv), serverError); err != nil { | 106 if err := conn.Serve(newStateServer(srv), serverError); err != nil { |
100 return err | 107 return err |
101 } | 108 } |
102 conn.Start() | 109 conn.Start() |
103 select { | 110 select { |
104 case <-conn.Dead(): | 111 case <-conn.Dead(): |
105 case <-srv.tomb.Dying(): | 112 case <-srv.tomb.Dying(): |
106 } | 113 } |
107 return conn.Close() | 114 return conn.Close() |
108 } | 115 } |
109 | 116 |
110 var logRequests = true | 117 var logRequests = true |
OLD | NEW |