|
47 | 47 |
|
48 | 48 | ;; TODO: signal error when unknown class options passed |
49 | 49 | (defmethod shared-initialize :after ((class endpoint-class) slot-names |
50 | | - &key on-open on-close on-error on-message session-class &allow-other-keys) |
| 50 | + &key on-open on-close on-error on-message session-class &allow-other-keys) |
51 | 51 | (declare (ignore slot-names)) |
52 | | - (when on-open |
53 | | - (let* ((handler (eval (car on-open))) |
54 | | - (handler-lambda-list (function-lambda-list handler))) |
| 52 | + (if-let ((handler (eval (car on-open)))) |
| 53 | + (let ((handler-lambda-list (function-lambda-list handler))) |
55 | 54 | (check-open-handler-lambda-list handler-lambda-list) |
56 | 55 | (setf (slot-value class 'open-handler) handler |
57 | | - (slot-value class 'open-handler-lambda-list) handler-lambda-list))) |
58 | | - (when on-close |
59 | | - (let* ((handler (eval (car on-close))) |
60 | | - (handler-lambda-list (function-lambda-list handler))) |
| 56 | + (slot-value class 'open-handler-lambda-list) handler-lambda-list)) |
| 57 | + (setf (slot-value class 'open-handler) nil |
| 58 | + (slot-value class 'open-handler-lambda-list) nil)) |
| 59 | + (if-let ((handler (eval (car on-close)))) |
| 60 | + (let ((handler-lambda-list (function-lambda-list handler))) |
61 | 61 | (check-close-handler-lambda-list handler-lambda-list) |
62 | 62 | (setf (slot-value class 'close-handler) handler |
63 | | - (slot-value class 'close-handler-lambda-list) handler-lambda-list))) |
64 | | - (when on-error |
65 | | - (let* ((handler (eval (car on-error))) |
66 | | - (handler-lambda-list (function-lambda-list handler))) |
| 63 | + (slot-value class 'close-handler-lambda-list) handler-lambda-list)) |
| 64 | + (setf (slot-value class 'close-handler) nil |
| 65 | + (slot-value class 'close-handler-lambda-list) nil)) |
| 66 | + (if-let ((handler (eval (car on-error)))) |
| 67 | + (let ((handler-lambda-list (function-lambda-list handler))) |
67 | 68 | (check-error-handler-lambda-list handler-lambda-list) |
68 | 69 | (setf (slot-value class 'error-handler) handler |
69 | | - (slot-value class 'error-handler-lambda-list) handler-lambda-list))) |
70 | | - (when on-message |
71 | | - (let* ((handler (eval (car on-message))) |
72 | | - (handler-lambda-list (function-lambda-list handler))) |
| 70 | + (slot-value class 'error-handler-lambda-list) handler-lambda-list)) |
| 71 | + (setf (slot-value class 'error-handler) nil |
| 72 | + (slot-value class 'error-handler-lambda-list) nil)) |
| 73 | + (if-let (handler (eval (car on-message))) |
| 74 | + (let ((handler-lambda-list (function-lambda-list handler))) |
73 | 75 | (check-message-handler-lambda-list handler-lambda-list) |
74 | 76 | (setf (slot-value class 'message-handler) handler |
75 | | - (slot-value class 'message-handler-lambda-list) handler-lambda-list))) |
| 77 | + (slot-value class 'message-handler-lambda-list) handler-lambda-list)) |
| 78 | + (setf (slot-value class 'message-handler) nil |
| 79 | + (slot-value class 'message-handler-lambda-list) nil)) |
76 | 80 | (when session-class |
77 | 81 | (setf (slot-value class 'session-class) (eval (car session-class))))) |
78 | 82 |
|
|
0 commit comments