@@ -156,91 +156,6 @@ int swConnection_sendfile(swConnection *conn, char *filename)
156
156
return SW_OK ;
157
157
}
158
158
159
- int swConnection_send_string_buffer (swConnection * conn )
160
- {
161
- int ret ;
162
- swString * buffer = conn -> object ;
163
- swFactory * factory = SwooleG .factory ;
164
- swDispatchData task ;
165
-
166
- task .data .info .fd = conn -> fd ;
167
- task .data .info .from_id = conn -> from_id ;
168
-
169
- #ifdef SW_USE_RINGBUFFER
170
-
171
- swServer * serv = SwooleG .serv ;
172
- int target_worker_id = swServer_worker_schedule (serv , conn -> fd );
173
- swWorker * worker = swServer_get_worker (serv , target_worker_id );
174
- swMemoryPool * pool = worker -> pool_input ;
175
- swPackage package ;
176
-
177
- package .length = buffer -> length ;
178
- while (1 )
179
- {
180
- package .data = pool -> alloc (pool , buffer -> length );
181
- if (package .data == NULL )
182
- {
183
- swYield ();
184
- swWarn ("reactor memory pool full." );
185
- continue ;
186
- }
187
- break ;
188
- }
189
- task .data .info .type = SW_EVENT_PACKAGE ;
190
- task .data .info .len = sizeof (package );
191
- task .target_worker_id = target_worker_id ;
192
- //swoole_dump_bin(package.data, 's', buffer->length);
193
- memcpy (package .data , buffer -> str , buffer -> length );
194
- memcpy (task .data .data , & package , sizeof (package ));
195
- ret = factory -> dispatch (factory , & task );
196
-
197
- #else
198
- int send_n = buffer -> length ;
199
- task .data .info .type = SW_EVENT_PACKAGE_START ;
200
- task .target_worker_id = -1 ;
201
-
202
- /**
203
- * lock target
204
- */
205
- SwooleTG .factory_lock_target = 1 ;
206
-
207
- void * send_ptr = buffer -> str ;
208
- do
209
- {
210
- if (send_n > SW_BUFFER_SIZE )
211
- {
212
- task .data .info .len = SW_BUFFER_SIZE ;
213
- memcpy (task .data .data , send_ptr , SW_BUFFER_SIZE );
214
- }
215
- else
216
- {
217
- task .data .info .type = SW_EVENT_PACKAGE_END ;
218
- task .data .info .len = send_n ;
219
- memcpy (task .data .data , send_ptr , send_n );
220
- }
221
-
222
- swTrace ("dispatch, type=%d|len=%d\n" , _send .info .type , _send .info .len );
223
-
224
- ret = factory -> dispatch (factory , & task );
225
- //TODO: 处理数据失败,数据将丢失
226
- if (ret < 0 )
227
- {
228
- swWarn ("factory->dispatch failed." );
229
- }
230
- send_n -= task .data .info .len ;
231
- send_ptr += task .data .info .len ;
232
- }
233
- while (send_n > 0 );
234
-
235
- /**
236
- * unlock
237
- */
238
- SwooleTG .factory_target_worker = -1 ;
239
- SwooleTG .factory_lock_target = 0 ;
240
-
241
- #endif
242
- return ret ;
243
- }
244
159
245
160
void swConnection_clear_string_buffer (swConnection * conn )
246
161
{
@@ -252,95 +167,6 @@ void swConnection_clear_string_buffer(swConnection *conn)
252
167
}
253
168
}
254
169
255
- int swConnection_send_in_buffer (swConnection * conn )
256
- {
257
- swDispatchData task ;
258
- swFactory * factory = SwooleG .factory ;
259
-
260
- task .data .info .fd = conn -> fd ;
261
- task .data .info .from_id = conn -> from_id ;
262
-
263
- swBuffer * buffer = conn -> in_buffer ;
264
- swBuffer_trunk * trunk = swBuffer_get_trunk (buffer );
265
-
266
- #ifdef SW_USE_RINGBUFFER
267
-
268
- swServer * serv = SwooleG .serv ;
269
- uint16_t target_worker_id = swServer_worker_schedule (serv , conn -> fd );
270
- swWorker * worker = swServer_get_worker (serv , target_worker_id );
271
- swMemoryPool * pool = worker -> pool_input ;
272
- swPackage package ;
273
-
274
- package .length = 0 ;
275
- while (1 )
276
- {
277
- package .data = pool -> alloc (pool , buffer -> length );
278
- if (package .data == NULL )
279
- {
280
- swYield ();
281
- swWarn ("reactor memory pool full." );
282
- continue ;
283
- }
284
- break ;
285
- }
286
- task .data .info .type = SW_EVENT_PACKAGE ;
287
-
288
- while (trunk != NULL )
289
- {
290
- task .data .info .len = trunk -> length ;
291
- memcpy (package .data + package .length , trunk -> store .ptr , trunk -> length );
292
- package .length += trunk -> length ;
293
-
294
- swBuffer_pop_trunk (buffer , trunk );
295
- trunk = swBuffer_get_trunk (buffer );
296
- }
297
- task .data .info .len = sizeof (package );
298
- task .target_worker_id = target_worker_id ;
299
- memcpy (task .data .data , & package , sizeof (package ));
300
- //swWarn("[ReactorThread] copy_n=%d", package.length);
301
- return factory -> dispatch (factory , & task );
302
-
303
- #else
304
-
305
- int ret ;
306
- task .data .info .type = SW_EVENT_PACKAGE_START ;
307
- task .target_worker_id = -1 ;
308
-
309
- /**
310
- * lock target
311
- */
312
- SwooleTG .factory_lock_target = 1 ;
313
-
314
- while (trunk != NULL )
315
- {
316
- task .data .info .len = trunk -> length ;
317
- memcpy (task .data .data , trunk -> store .ptr , task .data .info .len );
318
- //package end
319
- if (trunk -> next == NULL )
320
- {
321
- task .data .info .type = SW_EVENT_PACKAGE_END ;
322
- }
323
- ret = factory -> dispatch (factory , & task );
324
- //TODO: 处理数据失败,数据将丢失
325
- if (ret < 0 )
326
- {
327
- swWarn ("factory->dispatch() failed." );
328
- }
329
- swBuffer_pop_trunk (buffer , trunk );
330
- trunk = swBuffer_get_trunk (buffer );
331
-
332
- swTrace ("send2worker[trunk_num=%d][type=%d]\n" , buffer -> trunk_num , _send .info .type );
333
- }
334
- /**
335
- * unlock
336
- */
337
- SwooleTG .factory_target_worker = -1 ;
338
- SwooleTG .factory_lock_target = 0 ;
339
-
340
- #endif
341
- return SW_OK ;
342
- }
343
-
344
170
volatile swBuffer_trunk * swConnection_get_in_buffer (swConnection * conn )
345
171
{
346
172
volatile swBuffer_trunk * trunk = NULL ;
0 commit comments