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
doc:plans [2014/01/21 10:34] – [with-policy] winklerdoc:plans [2015/05/11 17:06] (current) gkazhoya
Line 1: Line 1:
 +//**Note:** this page is deprecated. Please use [[tutorials:advanced:plans|this one]] instead.//
 +
 ====== Writing Plans ====== ====== Writing Plans ======
  
Line 57: Line 59:
          (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 70:
 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 92:
   (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 102:
 === 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: