Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
ficus_clientserver
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yunpeng.song
ficus_clientserver
Commits
02d8531d
Commit
02d8531d
authored
Sep 04, 2019
by
yunpeng.song
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加device服务
parent
785b440b
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
79 additions
and
33 deletions
+79
-33
cfg.json
+2
-2
config/config.go
+7
-6
config/loadserconfig.go
+1
-0
main.go
+4
-0
model/clientredis.go
+28
-5
thrifthandler/devicehandler.go
+37
-20
No files found.
cfg.json
View file @
02d8531d
{
{
"servercfg"
:{
"servercfg"
:{
"traceid"
:
"
ser
1"
,
"traceid"
:
"1"
,
"project"
:
"
client
server"
"project"
:
"server"
},
},
"prefix"
:{
"prefix"
:{
"msgname"
:
""
,
"msgname"
:
""
,
...
...
config/config.go
View file @
02d8531d
...
@@ -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
{
...
...
config/loadserconfig.go
View file @
02d8531d
...
@@ -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
,
...
...
main.go
View file @
02d8531d
...
@@ -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
)
...
...
model/clientredis.go
View file @
02d8531d
...
@@ -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
)
...
...
thrifthandler/devicehandler.go
View file @
02d8531d
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
//
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment