基于serf的数据库同步模块库
liuxiaolong
2019-10-08 9e9867a0f667b77648ac4a7881f7a596c363536e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package syncdb
 
import (
    "basic.com/valib/logger.git"
    "encoding/json"
)
 
type UserDelegate struct {
 
}
 
// NodeMeta is used to retrieve meta-data about the current node
// when broadcasting an alive message. It's length is limited to
// the given byte size. This metadata is available in the Node structure.
func (d *UserDelegate) NodeMeta(limit int) []byte{
    return []byte{}
}
 
// NotifyMsg is called when a user-data message is received.
// Care should be taken that this method does not block, since doing
// so would block the entire UDP packet receive loop. Additionally, the byte
// slice may be modified after the call returns, so it should be copied if needed
func (d *UserDelegate) NotifyMsg(msg []byte) {
    recvMsg := msg
    logger.Info("UserDelegate NotifyMsg.len:",len(recvMsg))
    QueryTcpResponseChan <- msg
 
    var dumpSqls []string
    err := json.Unmarshal(recvMsg, &dumpSqls)
 
    if err == nil {
        logger.Debug("dumpSqls:", dumpSqls)
    } else {
        logger.Error("UserDelete unmarshal msg to dumpSqls err:",err)
    }
}
 
// GetBroadcasts is called when user data messages can be broadcast.
// It can return a list of buffers to send. Each buffer should assume an
// overhead as provided with a limit on the total byte size allowed.
// The total byte size of the resulting data to send must not exceed
// the limit. Care should be taken that this method does not block,
// since doing so would block the entire UDP packet receive loop.
func (d *UserDelegate) GetBroadcasts(overhead, limit int) [][]byte {
    return [][]byte{}
}
 
// LocalState is used for a TCP Push/Pull. This is sent to
// the remote side in addition to the membership information. Any
// data can be sent here. See MergeRemoteState as well. The `join`
// boolean indicates this is for a join instead of a push/pull.
func (d *UserDelegate) LocalState(join bool) []byte {
    return []byte{}
}
 
// MergeRemoteState is invoked after a TCP Push/Pull. This is the
// state received from the remote side and is the result of the
// remote side's LocalState call. The 'join'
// boolean indicates this is for a join instead of a push/pull.
func (d *UserDelegate) MergeRemoteState(buf []byte, join bool) {
 
}