diff options
author | Micael Karlberg <[email protected]> | 2010-06-07 12:00:00 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2010-08-20 08:57:11 +0200 |
commit | 61b1feed86ccf574613b913c5eea57d138eeb178 (patch) | |
tree | f4e25826fff8e222c95741ff401c5a112a912456 /lib/megaco/src/engine/megaco_monitor.erl | |
parent | 6769f83da0f193052a30ff8933a014e9cf3b0cdf (diff) | |
download | otp-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.erl | 33 |
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). |