2016-12-13 18:03:16 +03:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"net"
|
|
|
|
"net/http"
|
|
|
|
"os"
|
|
|
|
"os/signal"
|
|
|
|
"syscall"
|
|
|
|
|
|
|
|
"github.com/go-kit/kit/log"
|
|
|
|
"github.com/gorilla/handlers"
|
|
|
|
"google.golang.org/grpc"
|
|
|
|
|
2016-12-13 18:11:50 +03:00
|
|
|
session_svc "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/session"
|
2016-12-13 18:03:16 +03:00
|
|
|
session_endpoints "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/session/gen/endpoints"
|
2016-12-13 18:11:50 +03:00
|
|
|
session_pb "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/session/gen/pb"
|
2016-12-13 18:03:16 +03:00
|
|
|
session_grpctransport "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/session/gen/transports/grpc"
|
|
|
|
session_httptransport "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/session/gen/transports/http"
|
2016-12-13 18:11:50 +03:00
|
|
|
|
|
|
|
sprint_svc "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/sprint"
|
|
|
|
sprint_endpoints "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/sprint/gen/endpoints"
|
|
|
|
sprint_pb "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/sprint/gen/pb"
|
|
|
|
sprint_grpctransport "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/sprint/gen/transports/grpc"
|
|
|
|
sprint_httptransport "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/sprint/gen/transports/http"
|
2016-12-13 19:18:55 +03:00
|
|
|
|
|
|
|
user_svc "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/user"
|
|
|
|
user_endpoints "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/user/gen/endpoints"
|
|
|
|
user_pb "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/user/gen/pb"
|
|
|
|
user_grpctransport "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/user/gen/transports/grpc"
|
|
|
|
user_httptransport "github.com/moul/protoc-gen-gotemplate/examples/go-kit/services/user/gen/transports/http"
|
2016-12-13 18:03:16 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
mux := http.NewServeMux()
|
|
|
|
ctx := context.Background()
|
|
|
|
errc := make(chan error)
|
|
|
|
s := grpc.NewServer()
|
|
|
|
var logger log.Logger
|
|
|
|
{
|
|
|
|
logger = log.NewLogfmtLogger(os.Stdout)
|
|
|
|
logger = log.NewContext(logger).With("ts", log.DefaultTimestampUTC)
|
|
|
|
logger = log.NewContext(logger).With("caller", log.DefaultCaller)
|
|
|
|
}
|
|
|
|
|
|
|
|
// initialize services
|
|
|
|
{
|
2016-12-13 18:11:50 +03:00
|
|
|
svc := session_svc.New()
|
2016-12-13 18:03:16 +03:00
|
|
|
endpoints := session_endpoints.MakeEndpoints(svc)
|
|
|
|
srv := session_grpctransport.MakeGRPCServer(ctx, endpoints)
|
|
|
|
session_pb.RegisterSessionServiceServer(s, srv)
|
|
|
|
session_httptransport.RegisterHandlers(ctx, svc, mux, endpoints)
|
|
|
|
}
|
|
|
|
{
|
2016-12-13 18:11:50 +03:00
|
|
|
svc := sprint_svc.New()
|
|
|
|
endpoints := sprint_endpoints.MakeEndpoints(svc)
|
|
|
|
srv := sprint_grpctransport.MakeGRPCServer(ctx, endpoints)
|
|
|
|
sprint_pb.RegisterSprintServiceServer(s, srv)
|
|
|
|
sprint_httptransport.RegisterHandlers(ctx, svc, mux, endpoints)
|
2016-12-13 18:03:16 +03:00
|
|
|
}
|
2016-12-13 19:18:55 +03:00
|
|
|
{
|
|
|
|
svc := user_svc.New()
|
|
|
|
endpoints := user_endpoints.MakeEndpoints(svc)
|
|
|
|
srv := user_grpctransport.MakeGRPCServer(ctx, endpoints)
|
|
|
|
user_pb.RegisterUserServiceServer(s, srv)
|
|
|
|
user_httptransport.RegisterHandlers(ctx, svc, mux, endpoints)
|
|
|
|
}
|
2016-12-13 18:03:16 +03:00
|
|
|
|
|
|
|
// start servers
|
|
|
|
go func() {
|
|
|
|
c := make(chan os.Signal, 1)
|
|
|
|
signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
errc <- fmt.Errorf("%s", <-c)
|
|
|
|
}()
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
logger := log.NewContext(logger).With("transport", "HTTP")
|
|
|
|
logger.Log("addr", ":8000")
|
|
|
|
errc <- http.ListenAndServe(":8000", handlers.LoggingHandler(os.Stderr, mux))
|
|
|
|
}()
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
logger := log.NewContext(logger).With("transport", "gRPC")
|
|
|
|
ln, err := net.Listen("tcp", ":9000")
|
|
|
|
if err != nil {
|
|
|
|
errc <- err
|
|
|
|
return
|
|
|
|
}
|
|
|
|
logger.Log("addr", ":9000")
|
|
|
|
errc <- s.Serve(ln)
|
|
|
|
}()
|
|
|
|
|
|
|
|
logger.Log("exit", <-errc)
|
|
|
|
}
|