@@ -76,12 +76,30 @@ struct InnerPool<C, E, M, H> where C: Send, E: Send, M: PoolManager<C, E>, H: Er
76
76
manager : M ,
77
77
error_handler : H ,
78
78
internals : Mutex < PoolInternals < C > > ,
79
+ task_pool : Mutex < TaskPool > ,
80
+ }
81
+
82
+ impl < C , E , M , H > InnerPool < C , E , M , H >
83
+ where C : Send , E : Send , M : PoolManager < C , E > , H : ErrorHandler < E > {
84
+ fn add_connection ( & self ) {
85
+ let inner = self . clone ( ) ;
86
+ self . task_pool . lock ( ) . execute ( proc ( ) {
87
+ match inner. manager . connect ( ) {
88
+ Ok ( conn) => {
89
+ let mut internals = inner. internals . lock ( ) ;
90
+ internals. conns . push_back ( conn) ;
91
+ internals. num_conns += 1 ;
92
+ internals. cond . signal ( ) ;
93
+ }
94
+ Err ( err) => inner. error_handler . handle_error ( err) ,
95
+ }
96
+ } ) ;
97
+ }
79
98
}
80
99
81
100
/// A generic connection pool.
82
101
pub struct Pool < C , E , M , H > where C : Send , E : Send , M : PoolManager < C , E > , H : ErrorHandler < E > {
83
102
inner : Arc < InnerPool < C , E , M , H > > ,
84
- task_pool : Mutex < TaskPool > ,
85
103
}
86
104
87
105
impl < C , E , M , H > Pool < C , E , M , H >
@@ -103,18 +121,16 @@ impl<C, E, M, H> Pool<C, E, M, H>
103
121
manager : manager,
104
122
error_handler : error_handler,
105
123
internals : Mutex :: new ( internals) ,
106
- } ) ;
107
-
108
- let pool = Pool {
109
- inner : inner,
110
124
task_pool : Mutex :: new ( TaskPool :: new ( config. helper_tasks ) ) ,
111
- } ;
125
+ } ) ;
112
126
113
127
for _ in range ( 0 , config. pool_size ) {
114
- pool . add_connection ( ) ;
128
+ inner . add_connection ( ) ;
115
129
}
116
130
117
- Ok ( pool)
131
+ Ok ( Pool {
132
+ inner : inner
133
+ } )
118
134
}
119
135
120
136
/// Retrieves a connection from the pool.
@@ -157,21 +173,6 @@ impl<C, E, M, H> Pool<C, E, M, H>
157
173
internals. cond . signal ( ) ;
158
174
}
159
175
}
160
-
161
- fn add_connection ( & self ) {
162
- let inner = self . inner . clone ( ) ;
163
- self . task_pool . lock ( ) . execute ( proc ( ) {
164
- match inner. manager . connect ( ) {
165
- Ok ( conn) => {
166
- let mut internals = inner. internals . lock ( ) ;
167
- internals. conns . push_back ( conn) ;
168
- internals. num_conns += 1 ;
169
- internals. cond . signal ( ) ;
170
- }
171
- Err ( err) => inner. error_handler . handle_error ( err) ,
172
- }
173
- } ) ;
174
- }
175
176
}
176
177
177
178
/// A smart pointer wrapping a connection.
0 commit comments