forked from lni/dragonboat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
binding.go
75 lines (66 loc) · 2.89 KB
/
binding.go
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
63
64
65
66
67
68
69
70
71
72
73
74
75
// Copyright 2017-2019 Lei Ni (nilei81@gmail.com)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// +build dragonboat_language_binding
package dragonboat
import (
"time"
"github.com/lni/dragonboat/client"
)
//
// Public methods in this file are used by language bindings, they are
// considered as a part of the internal interface that can change any
// time. Applications are not suppose to directly call any of them.
//
func (rr *RequestResult) GetCode() RequestResultCode {
return rr.code
}
// ProposeCH is similar to the Propose method with an extra ICompleteHandler
// specified. On proposal's completion, the ICompleteHandler will be invoked
// by the system. The ICompleteHandler instance should not be used as a
// general callback function, it should only be used to notify the completion
// of the proposal. ProposeWithCH is mainly used by language bindings to
// implement async proposals, Go applications are expected to use the Propose
// method.
func (nh *NodeHost) ProposeCH(s *client.Session,
data []byte, handler ICompleteHandler,
timeout time.Duration) (*RequestState, error) {
return nh.propose(s, data, handler, timeout)
}
// ReadIndexCH is similar to the ReadIndex method with an extra
// ICompleteHandler specified. On completion of the ReadIndex operation, the
// ICompleteHandler will be invoked by the system. The ICompleteHandler should
// not be used as a general callback function, it should only be used to notify
// the completion of the ReadIndex operation.
// ReadIndexCH is mainly used by language bindings to implement async
// ReadIndex operations, Go applications are expected to use the ReadIndex
// method.
func (nh *NodeHost) ReadIndexCH(clusterID uint64,
handler ICompleteHandler,
timeout time.Duration) (*RequestState, error) {
return nh.readIndex(clusterID, handler, timeout)
}
// ProposeSessionCH is similar to the ProposeSession method but with an extra
// ICompleteHandler specified as input parameter. The ICompleteHandler should
// not be used as a general callback function, it should only be used to notify
// the completion of the propose session operation.
func (nh *NodeHost) ProposeSessionCH(s *client.Session,
handler ICompleteHandler, timeout time.Duration) (*RequestState, error) {
v, ok := nh.getCluster(s.ClusterID)
if !ok {
return nil, ErrClusterNotFound
}
req, err := v.proposeSession(s, handler, timeout)
nh.execEngine.setNodeReady(s.ClusterID)
return req, err
}