Commit 02d8531d by yunpeng.song

增加device服务

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