aboutsummaryrefslogtreecommitdiffstats
path: root/lib/megaco/src/engine/megaco_monitor.erl
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2010-06-07 12:00:00 +0200
committerBjörn Gustavsson <[email protected]>2010-08-20 08:57:11 +0200
commit61b1feed86ccf574613b913c5eea57d138eeb178 (patch)
treef4e25826fff8e222c95741ff401c5a112a912456 /lib/megaco/src/engine/megaco_monitor.erl
parent6769f83da0f193052a30ff8933a014e9cf3b0cdf (diff)
downloadotp-61b1feed86ccf574613b913c5eea57d138eeb178.tar.gz
otp-61b1feed86ccf574613b913c5eea57d138eeb178.tar.bz2
otp-61b1feed86ccf574613b913c5eea57d138eeb178.zip
megaco: Patch 1123
OTP-8561 A minor compiler related performance improvement. OTP-8529 A raise condition when, during high load, processing both the original and a resent message and delivering this as two separate messages to the user. Note that this solution only protects against multiple reply deliveries! OTP-8627 Fix shared libraries installation. The flex shared lib(s) were incorrectly installed as data files. OTP-8634 Eliminated a possible raise condition while creating pending counters.
Diffstat (limited to 'lib/megaco/src/engine/megaco_monitor.erl')
-rw-r--r--lib/megaco/src/engine/megaco_monitor.erl33
1 files changed, 28 insertions, 5 deletions
diff --git a/lib/megaco/src/engine/megaco_monitor.erl b/lib/megaco/src/engine/megaco_monitor.erl
index f95a20cf58..29275371be 100644
--- a/lib/megaco/src/engine/megaco_monitor.erl
+++ b/lib/megaco/src/engine/megaco_monitor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -51,6 +51,11 @@
update_request_field/3, update_request_fields/2,
delete_request/1,
+ request_lockcnt_cre/1,
+ request_lockcnt_del/1,
+ request_lockcnt_inc/1,
+ request_lockcnt_dec/1,
+
lookup_reply/1,
lookup_reply_field/2,
match_replies/1,
@@ -115,6 +120,24 @@ update_request_fields(Key, NewFields) when is_list(NewFields) ->
delete_request(Key) ->
ets:delete(megaco_requests, Key).
+
+request_lockcnt_cre(TransId) ->
+ Key = {TransId, lockcnt},
+ ets:insert_new(megaco_requests, {Key, 1}).
+
+request_lockcnt_del(TransId) ->
+ Key = {TransId, lockcnt},
+ ets:delete(megaco_requests, Key).
+
+request_lockcnt_inc(TransId) ->
+ Key = {TransId, lockcnt},
+ (catch ets:update_counter(megaco_requests, Key, 1)).
+
+request_lockcnt_dec(TransId) ->
+ Key = {TransId, lockcnt},
+ (catch ets:update_counter(megaco_requests, Key, -1)).
+
+
lookup_reply(Key) ->
ets:lookup(megaco_replies, Key).