Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:plans [2014/01/21 10:34] – [with-policy] winklerdoc:plans [2014/12/10 14:50] bbrieber
Line 57: Line 57:
          (declare (ignore f))is available that the given          (declare (ignore f))is available that the given
          (do-custom-handling-here)          (do-custom-handling-here)
-         (retry))) ;; Or whatever seems appropriate in your use-case+         (retry))) ;; Or whatever seems appropriate in your use-case e.g. (return)
     (with-named-policy 'my-policy (10 5)     (with-named-policy 'my-policy (10 5)
       (loop do (format t "Main loop cycle.~%")       (loop do (format t "Main loop cycle.~%")
Line 68: Line 68:
 When policy instances by the names ''my-policy-object'' and ''my-other-policy-object'' should be used, the following code snippet reflects this behaviour. The policy ''my-policy-object'' takes two ''int''s as parameters, while ''is available that the givenmy-other-policy-object'' takes a string as an argument. When policy instances by the names ''my-policy-object'' and ''my-other-policy-object'' should be used, the following code snippet reflects this behaviour. The policy ''my-policy-object'' takes two ''int''s as parameters, while ''is available that the givenmy-other-policy-object'' takes a string as an argument.
 <code lisp> <code lisp>
-(with-policiescan+(with-policies
     ((my-policy-object (3 1))     ((my-policy-object (3 1))
      (my-policy-object (100 4))      (my-policy-object (100 4))
      (my-other-policy-object ("Test")))      (my-other-policy-object ("Test")))
-  (body-code))Right now, just a `timeout-policy` is available that the given `body` stops code after a given amount of time (in seconds) if it hasn't finished by then. +  (body-code))
- +
-Use it like this: +
-```lisp +
-(with-policy cpl:timeout-policy (5.0) +
-  (body-code-goes-here)) +
-``` +
-And for catching the check condition when the timeout actually happens: +
-```lisp +
-(with-failure-handling +
-    ((policy-check-condition-met (f) +
-      (declare (ignore f)) +
-      (handle-error-here-and-maybe-retry))) +
-  (with-policy cpl:timeout-policy (5.0) +
-    (body-code-goes-here))) +
-```+
 </code> </code>
 In this example, the resulting code will be equivalent to the following: In this example, the resulting code will be equivalent to the following:
 <code lisp> <code lisp>
-(with-policy my-policy-object (3 1)is available that the given+(with-policy my-policy-object (3 1)
   (with-policy my-policy-object (100 4)   (with-policy my-policy-object (100 4)
     (with-policy my-other-policy-object ("Test")     (with-policy my-other-policy-object ("Test")
       (body-code))))       (body-code))))
-</code>```lisp+</code>
  
-The same princple applies to ''with-named-policies'', with the only difference being that it does not take policy instances, but policy name symbols as parameters:can+The same princple applies to ''with-named-policies'', with the only difference being that it does not take policy instances, but policy name symbols as parameters:
 <code lisp> <code lisp>
 (with-named-policies (with-named-policies
Line 105: Line 90:
   (body-code))   (body-code))
 </code> </code>
-This results in:+This results in the same behavior as:
 <code lisp> <code lisp>
 (with-named-policy 'my-policy (3 1) (with-named-policy 'my-policy (3 1)
Line 115: Line 100:
 === Built-in Policies === === Built-in Policies ===
 == timeout-policy == == timeout-policy ==
-When a piece of code only has a limited maximum amount of time for execution (and must be aborted after that duration), the ''timeout-policy'' comes in handy:+When a piece of code only has a limited maximum amount of time for execution (and must be aborted after that duration), the ''timeout-policy'' comes in handy.
  
 Use it like this: Use it like this: