1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
3 ;;; --- Miscellaneous utilities.
6 (in-package :io.multiplex
)
8 (defun timeout->timeval
(timeout tv
)
9 (with-foreign-slots ((isys:sec isys
:usec
) tv isys
:timeval
)
10 (multiple-value-bind (%sec %usec
)
11 (decode-timeout timeout
)
15 (defun timeout->timespec
(timeout ts
)
16 (with-foreign-slots ((isys:sec isys
:nsec
) ts isys
:timespec
)
17 (multiple-value-bind (%sec %usec
)
18 (decode-timeout timeout
)
20 isys
:nsec
(* 1000 %usec
)))))
22 (defun timeout->milisec
(timeout)
24 (multiple-value-bind (sec usec
)
25 (decode-timeout timeout
)
27 (truncate usec
1000)))
30 (defmacro ignore-and-print-errors
(&body body
)
31 `(handler-case (locally ,@body
)
33 (warn "Caught a ~A: ~A, ignoring it."
34 (type-of error
) error
))))