Skip to content

Commit 29516da

Browse files
committed
Added atomic type opperations to shmdict
- Added cas(compare and swap) to shdict - Added cog(compare or get) to shdict
1 parent 560461e commit 29516da

File tree

5 files changed

+1311
-1
lines changed

5 files changed

+1311
-1
lines changed

README.markdown

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3560,10 +3560,12 @@ Nginx API for Lua
35603560
* [ngx.shared.DICT](#ngxshareddict)
35613561
* [ngx.shared.DICT.get](#ngxshareddictget)
35623562
* [ngx.shared.DICT.get_stale](#ngxshareddictget_stale)
3563+
* [ngx.shared.DICT.cog](#ngxshareddictcog)
35633564
* [ngx.shared.DICT.set](#ngxshareddictset)
35643565
* [ngx.shared.DICT.safe_set](#ngxshareddictsafe_set)
35653566
* [ngx.shared.DICT.add](#ngxshareddictadd)
35663567
* [ngx.shared.DICT.safe_add](#ngxshareddictsafe_add)
3568+
* [ngx.shared.DICT.cas](#ngxshareddictcas)
35673569
* [ngx.shared.DICT.replace](#ngxshareddictreplace)
35683570
* [ngx.shared.DICT.delete](#ngxshareddictdelete)
35693571
* [ngx.shared.DICT.incr](#ngxshareddictincr)
@@ -6756,10 +6758,12 @@ The resulting object `dict` has the following methods:
67566758

67576759
* [get](#ngxshareddictget)
67586760
* [get_stale](#ngxshareddictget_stale)
6761+
* [cog](#ngxshareddictcog)
67596762
* [set](#ngxshareddictset)
67606763
* [safe_set](#ngxshareddictsafe_set)
67616764
* [add](#ngxshareddictadd)
67626765
* [safe_add](#ngxshareddictsafe_add)
6766+
* [cas](#ngxshareddictcas)
67636767
* [replace](#ngxshareddictreplace)
67646768
* [delete](#ngxshareddictdelete)
67656769
* [incr](#ngxshareddictincr)
@@ -6884,6 +6888,26 @@ See also [ngx.shared.DICT](#ngxshareddict).
68846888

68856889
[Back to TOC](#nginx-api-for-lua)
68866890

6891+
ngx.shared.DICT.cog
6892+
-------------------
6893+
**syntax:** *value, flags = ngx.shared.DICT:cog(key, old_value?, old_flags?)*
6894+
6895+
**context:** *set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*, ssl_session_store_by_lua*, ssl_client_hello_by_lua**
6896+
6897+
Similar to the [get](#ngxshareddictget) method but only returns if
6898+
`old_value` and/or `old_flags` do not match shm.
6899+
6900+
if `old_value` or `old_flags` is `nil`
6901+
it will be ignored when comparing.
6902+
6903+
If data in shm matched function will return `nil, false`.
6904+
6905+
This method was first introduced in the `0.XX.X` release.
6906+
6907+
See also [ngx.shared.DICT](#ngxshareddict).
6908+
6909+
[Back to TOC](#nginx-api-for-lua)
6910+
68876911
ngx.shared.DICT.set
68886912
-------------------
68896913

@@ -6984,6 +7008,26 @@ See also [ngx.shared.DICT](#ngxshareddict).
69847008

69857009
[Back to TOC](#nginx-api-for-lua)
69867010

7011+
ngx.shared.DICT.cas
7012+
-------------------
7013+
**syntax:** *success, err, forcible = ngx.shared.DICT:cas(key, old_value?, old_flags?, value?, flags?, exptime?)*
7014+
7015+
**context:** *set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*, ssl_session_store_by_lua*, ssl_client_hello_by_lua**
7016+
7017+
Similar to the [set](#ngxshareddictset) method but only sets value if
7018+
`old_value` and/or `old_flags` matches shm.
7019+
7020+
If `old_value` or `old_flags` is `nil` it will
7021+
not be used to compare to the shm.
7022+
7023+
If data in shm do not match, function will return `false, false`.
7024+
7025+
This method was first introduced in the `0.XX.X` release.
7026+
7027+
See also [ngx.shared.DICT](#ngxshareddict).
7028+
7029+
[Back to TOC](#nginx-api-for-lua)
7030+
69877031
ngx.shared.DICT.replace
69887032
-----------------------
69897033

doc/HttpLuaModule.wiki

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5712,10 +5712,12 @@ The resulting object <code>dict</code> has the following methods:
57125712
57135713
* [[#ngx.shared.DICT.get|get]]
57145714
* [[#ngx.shared.DICT.get_stale|get_stale]]
5715+
* [[#ngx.shared.DICT.cog|cog]]
57155716
* [[#ngx.shared.DICT.set|set]]
57165717
* [[#ngx.shared.DICT.safe_set|safe_set]]
57175718
* [[#ngx.shared.DICT.add|add]]
57185719
* [[#ngx.shared.DICT.safe_add|safe_add]]
5720+
* [[#ngx.shared.DICT.cas|cas]]
57195721
* [[#ngx.shared.DICT.replace|replace]]
57205722
* [[#ngx.shared.DICT.delete|delete]]
57215723
* [[#ngx.shared.DICT.incr|incr]]
@@ -5828,6 +5830,23 @@ This method was first introduced in the <code>0.8.6</code> release.
58285830
58295831
See also [[#ngx.shared.DICT|ngx.shared.DICT]].
58305832
5833+
== ngx.shared.DICT.cog ==
5834+
'''syntax:''' ''value, flags = ngx.shared.DICT:cog(key, old_value?, old_flags?)''
5835+
5836+
'''context:''' ''set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*, ssl_session_store_by_lua*, ssl_client_hello_by_lua*''
5837+
5838+
Similar to the [[#ngx.shared.DICT.get|get]] method but only returns if
5839+
<code>old_value</code> and/or <code>old_flags</code> do not match shm.
5840+
5841+
if <code>old_value</code> or <code>old_flags</code> is <code>nil</code>
5842+
it will be ignored when comparing.
5843+
5844+
If data in shm matched function will return <code>nil, false</code>.
5845+
5846+
This method was first introduced in the <code>0.XX.X</code> release.
5847+
5848+
See also [[#ngx.shared.DICT|ngx.shared.DICT]].
5849+
58315850
== ngx.shared.DICT.set ==
58325851
58335852
'''syntax:''' ''success, err, forcible = ngx.shared.DICT:set(key, value, exptime?, flags?)''
@@ -5914,6 +5933,23 @@ This feature was first introduced in the <code>v0.7.18</code> release.
59145933
59155934
See also [[#ngx.shared.DICT|ngx.shared.DICT]].
59165935
5936+
== ngx.shared.DICT.cas ==
5937+
'''syntax:''' ''success, err, forcible = ngx.shared.DICT:cas(key, old_value?, old_flags?, value?, flags?, exptime?)''
5938+
5939+
'''context:''' ''set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, ngx.timer.*, balancer_by_lua*, ssl_certificate_by_lua*, ssl_session_fetch_by_lua*, ssl_session_store_by_lua*, ssl_client_hello_by_lua*''
5940+
5941+
Similar to the [[#ngx.shared.DICT.set|set]] method but only sets value if
5942+
<code>old_value</code> and/or <code>old_flags</code> matches shm.
5943+
5944+
If <code>old_value</code> or <code>old_flags</code> is <code>nil</code> it will
5945+
not be used to compare to the shm.
5946+
5947+
If data in shm do not match, function will return <code>false, false</code>.
5948+
5949+
This method was first introduced in the <code>0.XX.X</code> release.
5950+
5951+
See also [[#ngx.shared.DICT|ngx.shared.DICT]].
5952+
59175953
== ngx.shared.DICT.replace ==
59185954
59195955
'''syntax:''' ''success, err, forcible = ngx.shared.DICT:replace(key, value, exptime?, flags?)''

0 commit comments

Comments
 (0)