// Code generated by microgen 0.9.1. DO NOT EDIT.

// DO NOT EDIT.
package transportgrpc

import (
	transport "git.perx.ru/perxis/perxis-go/pkg/locales/transport"
	pb "git.perx.ru/perxis/perxis-go/proto/locales"
	grpc "github.com/go-kit/kit/transport/grpc"
	empty "github.com/golang/protobuf/ptypes/empty"
	context "golang.org/x/net/context"
)

type localesServer struct {
	create grpc.Handler
	list   grpc.Handler
	delete grpc.Handler

	pb.UnimplementedLocalesServer
}

func NewGRPCServer(endpoints *transport.EndpointsSet, opts ...grpc.ServerOption) pb.LocalesServer {
	return &localesServer{
		create: grpc.NewServer(
			endpoints.CreateEndpoint,
			_Decode_Create_Request,
			_Encode_Create_Response,
			opts...,
		),
		delete: grpc.NewServer(
			endpoints.DeleteEndpoint,
			_Decode_Delete_Request,
			_Encode_Delete_Response,
			opts...,
		),
		list: grpc.NewServer(
			endpoints.ListEndpoint,
			_Decode_List_Request,
			_Encode_List_Response,
			opts...,
		),
	}
}

func (S *localesServer) Create(ctx context.Context, req *pb.CreateRequest) (*pb.CreateResponse, error) {
	_, resp, err := S.create.ServeGRPC(ctx, req)
	if err != nil {
		return nil, err
	}
	return resp.(*pb.CreateResponse), nil
}

func (S *localesServer) List(ctx context.Context, req *pb.ListRequest) (*pb.ListResponse, error) {
	_, resp, err := S.list.ServeGRPC(ctx, req)
	if err != nil {
		return nil, err
	}
	return resp.(*pb.ListResponse), nil
}

func (S *localesServer) Delete(ctx context.Context, req *pb.DeleteRequest) (*empty.Empty, error) {
	_, resp, err := S.delete.ServeGRPC(ctx, req)
	if err != nil {
		return nil, err
	}
	return resp.(*empty.Empty), nil
}