@@ -37,29 +37,19 @@ type (
37
37
)
38
38
39
39
type hooks struct {
40
- slice []Hook
41
- dial DialHook
42
- process ProcessHook
43
- processPipeline ProcessPipelineHook
44
- processTxPipeline ProcessPipelineHook
40
+ slice []Hook
41
+ dialHook DialHook
42
+ processHook ProcessHook
43
+ processPipelineHook ProcessPipelineHook
44
+ processTxPipelineHook ProcessPipelineHook
45
45
}
46
46
47
47
func (hs * hooks ) AddHook (hook Hook ) {
48
- if hs .process == nil {
49
- panic ("hs.process == nil" )
50
- }
51
- if hs .processPipeline == nil {
52
- panic ("hs.processPipeline == nil" )
53
- }
54
- if hs .processTxPipeline == nil {
55
- panic ("hs.processTxPipeline == nil" )
56
- }
57
-
58
48
hs .slice = append (hs .slice , hook )
59
- hs .dial = hook .DialHook (hs .dial )
60
- hs .process = hook .ProcessHook (hs .process )
61
- hs .processPipeline = hook .ProcessPipelineHook (hs .processPipeline )
62
- hs .processTxPipeline = hook .ProcessPipelineHook (hs .processTxPipeline )
49
+ hs .dialHook = hook .DialHook (hs .dialHook )
50
+ hs .processHook = hook .ProcessHook (hs .processHook )
51
+ hs .processPipelineHook = hook .ProcessPipelineHook (hs .processPipelineHook )
52
+ hs .processTxPipelineHook = hook .ProcessPipelineHook (hs .processTxPipelineHook )
63
53
}
64
54
65
55
func (hs * hooks ) clone () hooks {
@@ -70,37 +60,37 @@ func (hs *hooks) clone() hooks {
70
60
}
71
61
72
62
func (hs * hooks ) setDial (dial DialHook ) {
73
- hs .dial = dial
63
+ hs .dialHook = dial
74
64
for _ , h := range hs .slice {
75
- if wrapped := h .DialHook (hs .dial ); wrapped != nil {
76
- hs .dial = wrapped
65
+ if wrapped := h .DialHook (hs .dialHook ); wrapped != nil {
66
+ hs .dialHook = wrapped
77
67
}
78
68
}
79
69
}
80
70
81
71
func (hs * hooks ) setProcess (process ProcessHook ) {
82
- hs .process = process
72
+ hs .processHook = process
83
73
for _ , h := range hs .slice {
84
- if wrapped := h .ProcessHook (hs .process ); wrapped != nil {
85
- hs .process = wrapped
74
+ if wrapped := h .ProcessHook (hs .processHook ); wrapped != nil {
75
+ hs .processHook = wrapped
86
76
}
87
77
}
88
78
}
89
79
90
80
func (hs * hooks ) setProcessPipeline (processPipeline ProcessPipelineHook ) {
91
- hs .processPipeline = processPipeline
81
+ hs .processPipelineHook = processPipeline
92
82
for _ , h := range hs .slice {
93
- if wrapped := h .ProcessPipelineHook (hs .processPipeline ); wrapped != nil {
94
- hs .processPipeline = wrapped
83
+ if wrapped := h .ProcessPipelineHook (hs .processPipelineHook ); wrapped != nil {
84
+ hs .processPipelineHook = wrapped
95
85
}
96
86
}
97
87
}
98
88
99
89
func (hs * hooks ) setProcessTxPipeline (processTxPipeline ProcessPipelineHook ) {
100
- hs .processTxPipeline = processTxPipeline
90
+ hs .processTxPipelineHook = processTxPipeline
101
91
for _ , h := range hs .slice {
102
- if wrapped := h .ProcessPipelineHook (hs .processTxPipeline ); wrapped != nil {
103
- hs .processTxPipeline = wrapped
92
+ if wrapped := h .ProcessPipelineHook (hs .processTxPipelineHook ); wrapped != nil {
93
+ hs .processTxPipelineHook = wrapped
104
94
}
105
95
}
106
96
}
@@ -125,6 +115,22 @@ func (hs *hooks) withProcessPipelineHook(
125
115
return hook (ctx , cmds )
126
116
}
127
117
118
+ func (hs * hooks ) dial (ctx context.Context , network , addr string ) (net.Conn , error ) {
119
+ return hs .dialHook (ctx , network , addr )
120
+ }
121
+
122
+ func (hs * hooks ) process (ctx context.Context , cmd Cmder ) error {
123
+ return hs .processHook (ctx , cmd )
124
+ }
125
+
126
+ func (hs * hooks ) processPipeline (ctx context.Context , cmds []Cmder ) error {
127
+ return hs .processPipelineHook (ctx , cmds )
128
+ }
129
+
130
+ func (hs * hooks ) processTxPipeline (ctx context.Context , cmds []Cmder ) error {
131
+ return hs .processTxPipelineHook (ctx , cmds )
132
+ }
133
+
128
134
//------------------------------------------------------------------------------
129
135
130
136
type baseClient struct {
@@ -538,8 +544,8 @@ func NewClient(opt *Options) *Client {
538
544
opt : opt ,
539
545
},
540
546
}
541
- c .connPool = newConnPool (opt , c .baseClient .dial )
542
547
c .init ()
548
+ c .connPool = newConnPool (opt , c .hooks .dial )
543
549
544
550
return & c
545
551
}
0 commit comments