Commit 02d8531d by yunpeng.song

增加device服务

parent 785b440b
{
"servercfg":{
"traceid":"ser1",
"project":"clientserver"
"traceid":"1",
"project":"server"
},
"prefix":{
"msgname":"",
......
......@@ -70,12 +70,13 @@ type SERVER_CONFIG struct {
//redis key name
type REDISNAME_CONFIG struct {
MsgName string `json:"msg"` // 消息的前缀
ClientName string `json:"clientname"` // 客户端的前缀
ClientServer string `json:"clientserver"` // 客户端连接的server
MsgStatusName string `json:"msgstatus"` // 未执行消息的list,只带消息id的
RotuteStatusName string `json:"routestatusname"` // 在线路由的列表
RouterName string `json:"routername"` // 路由映射列表
DeviceName string `json:"Device"` // 设备的redis key
MsgName string `json:"msg"` // 消息的redis key
ClientName string `json:"clientname"` // 客户端的redis key
ClientServer string `json:"clientserver"` // 客户端连接的server redis key
MsgStatusName string `json:"msgstatus"` // 未执行消息的list,只带消息id的 redis key
RotuteStatusName string `json:"routestatusname"` // 在线路由的列表 redis key
RouterName string `json:"routername"` // 路由映射列表 redis key
}
type CFG struct {
......
......@@ -38,6 +38,7 @@ func initOhterCfg() {
ServerRedisConfig.MsgStatusName = "MsgStatus"
ServerRedisConfig.RotuteStatusName = "RouteStatus"
ServerRedisConfig.RouterName = "Router"
ServerRedisConfig.DeviceName = "Device"
log.WithFields(log.Fields{
"Traceid": Ctrl_Config_.ServerCfg.Traceid,
"Project": Ctrl_Config_.ServerCfg.Project,
......
......@@ -11,6 +11,9 @@ import (
log "github.com/sirupsen/logrus"
"net/http"
_ "net/http/pprof"
"github.com/apache/thrift/lib/go/thrift"
)
......@@ -25,6 +28,7 @@ var quitFlag chan int
func main() {
//读取配置文件
http.ListenAndServe(":8080", nil)
InitLog()
InitCfg()
quitFlag = make(chan int)
......
......@@ -2,6 +2,7 @@ package model
import (
"encoding/json"
"ficus/identity"
"ficus/mission"
"ficus_clientserver/config"
"ficus_router/redisctrl"
......@@ -9,19 +10,14 @@ import (
"github.com/go-redis/redis"
log "github.com/sirupsen/logrus"
"sync"
)
type CtrlRedisClient_ struct {
Lock sync.RWMutex
redisClient *redis.Client
clientChan chan T_FmClient
}
func NewCtrl_RedisClient_() *CtrlRedisClient_ {
p := &CtrlRedisClient_{}
p.clientChan = make(chan T_FmClient, 1000)
p.redisClient = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
Password: "", // no password set
......@@ -57,6 +53,33 @@ func (p *CtrlRedisClient_) GetMessage(k string) (mis mission.Message) {
return
}
func (p *CtrlRedisClient_) SetDevice(uuid string, d *identity.Device) bool {
jsonstr, _ := json.Marshal(d)
kname := config.ServerRedisConfig.DeviceName
log.WithFields(log.Fields{"func": "SetDevice", "kname": kname, "uuid": uuid}).Info(string(jsonstr))
err := redisctrl.HSet(p.redisClient, kname, uuid, jsonstr)
if err != nil {
return false
}
return true
}
func (p *CtrlRedisClient_) GetDevice(k string) (d identity.Device, err error) {
kname := config.ServerRedisConfig.DeviceName
result, err := redisctrl.HGet(p.redisClient, kname, k)
if err != nil {
fmt.Println("redis get:", k, " failed err:", err)
return
}
err = json.Unmarshal([]byte(result), &d)
if err != nil {
log.Println("json.Unmarshal error!", err)
return
}
return
}
func (p *CtrlRedisClient_) setMsg(msg Msg) bool {
kname := config.ServerRedisConfig.MsgStatusName
jsonstr, err := json.Marshal(msg)
......
package thrifthandler
import (
"context"
"ficus/identity"
"ficus/service"
"ficus_clientserver/model"
"net"
"os"
"github.com/apache/thrift/lib/go/thrift"
log "github.com/sirupsen/logrus"
)
type (
DeviceHandle struct {
redisClient *model.CtrlRedisClient_
}
)
// func DeviceServer() {
// serverTransport, err := thrift.NewTServerSocket(net.JoinHostPort("127.0.0.1", "9091"))
// if err != nil {
// log.Println("Error!", err)
// os.Exit(1)
// }
// handle := &PkgHandle{}
// processor := service.NewPackageServiceProcessor(handle)
// protocolFactory := thrift.NewTCompactProtocolFactory()
// transportFactory := thrift.NewTFramedTransportFactory(thrift.NewTTransportFactory())
// server := thrift.NewTSimpleServer4(processor, serverTransport, transportFactory, protocolFactory)
func DeviceServer() {
serverTransport, err := thrift.NewTServerSocket(net.JoinHostPort("127.0.0.1", "9091"))
if err != nil {
log.Println("Error!", err)
os.Exit(1)
}
handle := &DeviceHandle{}
processor := service.NewDeviceServiceProcessor(handle)
protocolFactory := thrift.NewTCompactProtocolFactory()
transportFactory := thrift.NewTFramedTransportFactory(thrift.NewTTransportFactory())
server := thrift.NewTSimpleServer4(processor, serverTransport, transportFactory, protocolFactory)
log.Println("thrift server in", "9091")
if err := server.Serve(); err != nil {
panic(err)
}
}
// log.Println("thrift server in", "9091")
// if err := server.Serve(); err != nil {
// panic(err)
// }
// }
func (d *DeviceHandle) Identify(ctx context.Context, uuid string) (r identity.Device, err error) {
return d.redisClient.GetDevice(uuid)
}
// func (d *DeviceHandle) identify(ctx context.Context, string uuid) (d *Device, err error) {
// }
// func (d *DeviceHandle) bind(ctx context.Context, string uuid, Device device) (bool, err error) {
// }
func (d *DeviceHandle) Bind(ctx context.Context, uuid string, device identity.Device) (r bool, err error) {
d.redisClient.SetDevice(uuid, &device)
return true, nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment