aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenoit Germain <bnt period germain arrobase gmail period com>2014-09-18 16:49:31 +0200
committerBenoit Germain <bnt period germain arrobase gmail period com>2014-09-18 16:49:31 +0200
commit2f7fbc306431a02a6f247148ebbda17b4c2d98f7 (patch)
treebb3a912def9f28a86a8d5d6291d3bd6334bed744 /src
parent0326aa6636b1dce2b2fc4c9db53b023534ca0512 (diff)
downloadlanes-2f7fbc306431a02a6f247148ebbda17b4c2d98f7.tar.gz
lanes-2f7fbc306431a02a6f247148ebbda17b4c2d98f7.tar.bz2
lanes-2f7fbc306431a02a6f247148ebbda17b4c2d98f7.zip
New API lanes.sleep (bumped version to 3.9.7)
Diffstat (limited to 'src')
-rw-r--r--src/lanes.c2
-rw-r--r--src/lanes.lua25
2 files changed, 22 insertions, 5 deletions
diff --git a/src/lanes.c b/src/lanes.c
index 1d60700..7f641c3 100644
--- a/src/lanes.c
+++ b/src/lanes.c
@@ -52,7 +52,7 @@
52 * ... 52 * ...
53 */ 53 */
54 54
55char const* VERSION = "3.9.6"; 55char const* VERSION = "3.9.7";
56 56
57/* 57/*
58=============================================================================== 58===============================================================================
diff --git a/src/lanes.lua b/src/lanes.lua
index 57aa0fe..210f325 100644
--- a/src/lanes.lua
+++ b/src/lanes.lua
@@ -331,12 +331,28 @@ end -- gen()
331 331
332-- PUBLIC LANES API 332-- PUBLIC LANES API
333local timer = function() error "timers are not active" end 333local timer = function() error "timers are not active" end
334local timer_lane = nil
335local timers = timer 334local timers = timer
335local timer_lane = nil
336
337-- timer_gateway should always exist, even when the settings disable the timers
338local timer_gateway = assert( core.timer_gateway)
339
340-----
341-- <void> = sleep( [seconds_])
342--
343-- PUBLIC LANES API
344local sleep = function( seconds_)
345 seconds_ = seconds_ or 0.0 -- this causes false and nil to be a valid input, equivalent to 0.0, but that's ok
346 if type( seconds_) ~= "number" then
347 error( "invalid duration " .. string_format( "%q", tostring(seconds_)))
348 end
349 -- receive data on a channel no-one ever sends anything, thus blocking for the specified duration
350 return timer_gateway:receive( seconds_, "ac100de1-a696-4619-b2f0-a26de9d58ab8")
351end
352
336 353
337if settings.with_timers ~= false then 354if settings.with_timers ~= false then
338 355
339local timer_gateway = assert( core.timer_gateway)
340-- 356--
341-- On first 'require "lanes"', a timer lane is spawned that will maintain 357-- On first 'require "lanes"', a timer lane is spawned that will maintain
342-- timer tables and sleep in between the timer events. All interaction with 358-- timer tables and sleep in between the timer events. All interaction with
@@ -351,8 +367,8 @@ local TGW_KEY= "(timer control)" -- the key does not matter, a 'weird' key ma
351local TGW_QUERY, TGW_REPLY = "(timer query)", "(timer reply)" 367local TGW_QUERY, TGW_REPLY = "(timer query)", "(timer reply)"
352local first_time_key= "first time" 368local first_time_key= "first time"
353 369
354local first_time= timer_gateway:get(first_time_key) == nil 370local first_time = timer_gateway:get( first_time_key) == nil
355timer_gateway:set(first_time_key,true) 371timer_gateway:set( first_time_key, true)
356 372
357-- 373--
358-- Timer lane; initialize only on the first 'require "lanes"' instance (which naturally 374-- Timer lane; initialize only on the first 'require "lanes"' instance (which naturally
@@ -703,6 +719,7 @@ end
703 lanes.timer = timer 719 lanes.timer = timer
704 lanes.timer_lane = timer_lane 720 lanes.timer_lane = timer_lane
705 lanes.timers = timers 721 lanes.timers = timers
722 lanes.sleep = sleep
706 lanes.genlock = genlock 723 lanes.genlock = genlock
707 lanes.now_secs = core.now_secs 724 lanes.now_secs = core.now_secs
708 lanes.genatomic = genatomic 725 lanes.genatomic = genatomic