| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package service
- import (
- "bet24.com/log"
- "bet24.com/servers/coreservice/servicesink/client"
- "bet24.com/utils"
- "context"
- "encoding/json"
- "errors"
- "fmt"
- "net"
- )
- var Addr string
- var _sink IServiceSink
- func Run(port int, sink IServiceSink) bool {
- if utils.CheckPortInUse(port) {
- log.Release("servicesink.Run port[%d] in use", port)
- return false
- }
- if sink == nil {
- log.Release("servicesink.Run sink == nil")
- return false
- }
- Addr = fmt.Sprintf("%s:%d", getMyIP(), port)
- _sink = sink
- return true
- }
- func getMyIP() string {
- addrs, err := net.InterfaceAddrs()
- if err != nil {
- fmt.Println(err)
- return ""
- }
- for _, address := range addrs {
- // 检查ip地址判断是否回环地址
- if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
- if ipnet.IP.To4() != nil {
- return ipnet.IP.String()
- }
- }
- }
- return ""
- }
- type Server int
- func (s *Server) OnNotification(ctx context.Context, args *client.Request, reply *client.Reply) error {
- var req client.Request_Notification
- if err := json.Unmarshal([]byte(args.Data), &req); err != nil {
- log.Debug("Server.OnNotification unmarshal fail %v", err)
- return errors.New("unmarshal error")
- }
- _sink.OnNotification(req.UserId, req.Data)
- return nil
- }
|