@@ -316,6 +316,10 @@ function skynet.ret(msg, sz)
316
316
coroutine_yield (" RETURN" , msg , sz )
317
317
end
318
318
319
+ function skynet .retpack (...)
320
+ return skynet .ret (skynet .pack (... ))
321
+ end
322
+
319
323
function skynet .wakeup (co )
320
324
if sleep_session [co ] and wakeup_session [co ] == nil then
321
325
wakeup_session [co ] = true
@@ -329,6 +333,17 @@ function skynet.dispatch(typename, func)
329
333
p .dispatch = func
330
334
end
331
335
336
+ local function unknown_request (session , address , msg , sz )
337
+ print (" Unknown request :" , c .tostring (msg ,sz ))
338
+ error (string.format (" Unknown session : %d from %x" , session , address ))
339
+ end
340
+
341
+ function skynet .dispatch_unknown_request (unknown )
342
+ local prev = unknown_request
343
+ unknown_request = unknown
344
+ return prev
345
+ end
346
+
332
347
local function unknown_response (session , address , msg , sz )
333
348
print (" Response message :" , c .tostring (msg ,sz ))
334
349
error (string.format (" Unknown session : %d from %x" , session , address ))
@@ -352,7 +367,7 @@ function skynet.fork(func,...)
352
367
table.insert (fork_queue , co )
353
368
end
354
369
355
- local function raw_dispatch_message (prototype , msg , sz , session , source )
370
+ local function raw_dispatch_message (prototype , msg , sz , session , source , ... )
356
371
-- skynet.PTYPE_RESPONSE = 1, read skynet.h
357
372
if prototype == 1 then
358
373
local co = session_id_coroutine [session ]
@@ -371,10 +386,9 @@ local function raw_dispatch_message(prototype, msg, sz, session, source)
371
386
local co = co_create (f )
372
387
session_coroutine_id [co ] = session
373
388
session_coroutine_address [co ] = source
374
- suspend (co , coroutine.resume (co , session ,source , p .unpack (msg ,sz )))
389
+ suspend (co , coroutine.resume (co , session ,source , p .unpack (msg ,sz , ... )))
375
390
else
376
- print (" Unknown request :" , p .unpack (msg ,sz ))
377
- error (string.format (" Can't dispatch type %s : " , p .name ))
391
+ unknown_request (session , source , msg , sz )
378
392
end
379
393
end
380
394
end
0 commit comments