mirror of
https://github.com/sot-tech/mochi.git
synced 2026-05-04 19:29:09 -07:00
@@ -1,6 +1,6 @@
|
||||
language: go
|
||||
|
||||
go: 1.3
|
||||
go: 1.4
|
||||
|
||||
before_install:
|
||||
- go get github.com/tools/godep
|
||||
|
||||
12
Godeps/Godeps.json
generated
12
Godeps/Godeps.json
generated
@@ -1,12 +1,7 @@
|
||||
{
|
||||
"ImportPath": "github.com/chihaya/chihaya",
|
||||
"GoVersion": "go1.3.3",
|
||||
"GoVersion": "go1.4.1",
|
||||
"Deps": [
|
||||
{
|
||||
"ImportPath": "code.google.com/p/go.net/netutil",
|
||||
"Comment": "null-164",
|
||||
"Rev": "6122c8c304675f19800c917359e02dd68e760a5b"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/chihaya/bencode",
|
||||
"Rev": "1df51811f3440202aa39df93596654319ea5ff57"
|
||||
@@ -34,6 +29,11 @@
|
||||
{
|
||||
"ImportPath": "github.com/stretchr/pat/stop",
|
||||
"Rev": "f7fe051f2b9bcaca162b38de4f93c9a8457160b9"
|
||||
},
|
||||
{
|
||||
"ImportPath": "golang.org/x/net/netutil",
|
||||
"Comment": "null-204",
|
||||
"Rev": "8fd8d3a0313cb59e495106ac76df5da29381fa24"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
2
Godeps/_workspace/.gitignore
generated
vendored
Normal file
2
Godeps/_workspace/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/pkg
|
||||
/bin
|
||||
@@ -32,7 +32,7 @@ use-cases).
|
||||
|
||||
## Building & Installing
|
||||
|
||||
Chihaya requires Go 1.3, [Godep], and a [Go environment] previously setup.
|
||||
Chihaya requires Go 1.4, [Godep], and a [Go environment] previously setup.
|
||||
|
||||
[Godep]: https://github.com/tools/godep
|
||||
[Go environment]: https://golang.org/doc/code.html
|
||||
|
||||
13
http/http.go
13
http/http.go
@@ -19,13 +19,17 @@ import (
|
||||
"github.com/chihaya/chihaya/tracker"
|
||||
)
|
||||
|
||||
// ResponseHandler is an HTTP handler that returns a status code.
|
||||
type ResponseHandler func(http.ResponseWriter, *http.Request, httprouter.Params) (int, error)
|
||||
|
||||
// Server represents an HTTP serving torrent tracker.
|
||||
type Server struct {
|
||||
config *config.Config
|
||||
tracker *tracker.Tracker
|
||||
}
|
||||
|
||||
// makeHandler wraps our ResponseHandlers while timing requests, collecting,
|
||||
// stats, logging, and handling errors.
|
||||
func makeHandler(handler ResponseHandler) httprouter.Handle {
|
||||
return func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
|
||||
var msg string
|
||||
@@ -63,6 +67,7 @@ func makeHandler(handler ResponseHandler) httprouter.Handle {
|
||||
}
|
||||
}
|
||||
|
||||
// newRouter returns a router with all the routes.
|
||||
func newRouter(s *Server) *httprouter.Router {
|
||||
r := httprouter.New()
|
||||
|
||||
@@ -91,6 +96,8 @@ func newRouter(s *Server) *httprouter.Router {
|
||||
return r
|
||||
}
|
||||
|
||||
// connState is used by graceful in order to gracefully shutdown. It also
|
||||
// keeps track of connection stats.
|
||||
func (s *Server) connState(conn net.Conn, state http.ConnState) {
|
||||
switch state {
|
||||
case http.StateNew:
|
||||
@@ -102,14 +109,16 @@ func (s *Server) connState(conn net.Conn, state http.ConnState) {
|
||||
case http.StateHijacked:
|
||||
panic("connection impossibly hijacked")
|
||||
|
||||
case http.StateActive: // Ignore.
|
||||
case http.StateIdle: // Ignore.
|
||||
// Ignore the following cases.
|
||||
case http.StateActive, http.StateIdle:
|
||||
|
||||
default:
|
||||
glog.Errorf("Connection transitioned to unknown state %s (%d)", state, state)
|
||||
}
|
||||
}
|
||||
|
||||
// Serve creates a new Server and proceeds to block while handling requests
|
||||
// until a graceful shutdown.
|
||||
func Serve(cfg *config.Config, tkr *tracker.Tracker) {
|
||||
srv := &Server{
|
||||
config: cfg,
|
||||
|
||||
Reference in New Issue
Block a user