mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-28 16:34:13 +01:00
Get rid of p1_mnesia file
This commit is contained in:
parent
b5c4fe6626
commit
568068c79f
@ -123,10 +123,7 @@ store_offline_msg(_Host, US, Msgs, Len, MaxOfflineMsgs,
|
|||||||
mnesia) ->
|
mnesia) ->
|
||||||
F = fun () ->
|
F = fun () ->
|
||||||
Count = if MaxOfflineMsgs =/= infinity ->
|
Count = if MaxOfflineMsgs =/= infinity ->
|
||||||
Len +
|
Len + count_mnesia_records(US);
|
||||||
p1_mnesia:count_records(offline_msg,
|
|
||||||
#offline_msg{us = US,
|
|
||||||
_ = '_'});
|
|
||||||
true -> 0
|
true -> 0
|
||||||
end,
|
end,
|
||||||
if Count > MaxOfflineMsgs -> discard_warn_sender(Msgs);
|
if Count > MaxOfflineMsgs -> discard_warn_sender(Msgs);
|
||||||
@ -986,8 +983,7 @@ count_offline_messages(User, Server) ->
|
|||||||
count_offline_messages(LUser, LServer, mnesia) ->
|
count_offline_messages(LUser, LServer, mnesia) ->
|
||||||
US = {LUser, LServer},
|
US = {LUser, LServer},
|
||||||
F = fun () ->
|
F = fun () ->
|
||||||
p1_mnesia:count_records(offline_msg,
|
count_mnesia_records(US)
|
||||||
#offline_msg{us = US, _ = '_'})
|
|
||||||
end,
|
end,
|
||||||
case catch mnesia:async_dirty(F) of
|
case catch mnesia:async_dirty(F) of
|
||||||
I when is_integer(I) -> I;
|
I when is_integer(I) -> I;
|
||||||
@ -1016,6 +1012,32 @@ count_offline_messages(_Acc, User, Server) ->
|
|||||||
N = count_offline_messages(User, Server),
|
N = count_offline_messages(User, Server),
|
||||||
{stop, N}.
|
{stop, N}.
|
||||||
|
|
||||||
|
%% Return the number of records matching a given match expression.
|
||||||
|
%% This function is intended to be used inside a Mnesia transaction.
|
||||||
|
%% The count has been written to use the fewest possible memory by
|
||||||
|
%% getting the record by small increment and by using continuation.
|
||||||
|
-define(BATCHSIZE, 100).
|
||||||
|
|
||||||
|
count_mnesia_records(US) ->
|
||||||
|
MatchExpression = #offline_msg{us = US, _ = '_'},
|
||||||
|
case mnesia:select(offline_msg, [{MatchExpression, [], [[]]}],
|
||||||
|
?BATCHSIZE, read) of
|
||||||
|
{Result, Cont} ->
|
||||||
|
Count = length(Result),
|
||||||
|
count_records_cont(Cont, Count);
|
||||||
|
'$end_of_table' ->
|
||||||
|
0
|
||||||
|
end.
|
||||||
|
|
||||||
|
count_records_cont(Cont, Count) ->
|
||||||
|
case mnesia:select(Cont) of
|
||||||
|
{Result, Cont} ->
|
||||||
|
NewCount = Count + length(Result),
|
||||||
|
count_records_cont(Cont, NewCount);
|
||||||
|
'$end_of_table' ->
|
||||||
|
Count
|
||||||
|
end.
|
||||||
|
|
||||||
offline_msg_schema() ->
|
offline_msg_schema() ->
|
||||||
{record_info(fields, offline_msg), #offline_msg{}}.
|
{record_info(fields, offline_msg), #offline_msg{}}.
|
||||||
|
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
%%% ====================================================================
|
|
||||||
%%% ``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 via the world wide web 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.
|
|
||||||
%%%
|
|
||||||
%%%
|
|
||||||
%%% The Initial Developer of the Original Code is ProcessOne.
|
|
||||||
%%% Portions created by ProcessOne are Copyright 2006-2014, ProcessOne
|
|
||||||
%%% All Rights Reserved.''
|
|
||||||
%%%
|
|
||||||
%%% This software is copyright 2006-2014, ProcessOne.
|
|
||||||
|
|
||||||
-module(p1_mnesia).
|
|
||||||
|
|
||||||
-author('mickael.remond@process-one.net').
|
|
||||||
|
|
||||||
-export([count_records/2]).
|
|
||||||
|
|
||||||
%% Return the number of records matching a given match expression.
|
|
||||||
%% This function is intended to be used inside a Mnesia transaction.
|
|
||||||
%% The count has been written to use the fewest possible memory by
|
|
||||||
%% getting the record by small increment and by using continuation.
|
|
||||||
-define(BATCHSIZE, 100).
|
|
||||||
|
|
||||||
count_records(Tab, MatchExpression) ->
|
|
||||||
case mnesia:select(Tab, [{MatchExpression, [], [[]]}],
|
|
||||||
?BATCHSIZE, read)
|
|
||||||
of
|
|
||||||
{Result, Cont} ->
|
|
||||||
Count = length(Result),
|
|
||||||
count_records_cont(Cont, Count);
|
|
||||||
'$end_of_table' -> 0
|
|
||||||
end.
|
|
||||||
|
|
||||||
count_records_cont(Cont, Count) ->
|
|
||||||
case mnesia:select(Cont) of
|
|
||||||
{Result, Cont} ->
|
|
||||||
NewCount = Count + length(Result),
|
|
||||||
count_records_cont(Cont, NewCount);
|
|
||||||
'$end_of_table' -> Count
|
|
||||||
end.
|
|
Loading…
Reference in New Issue
Block a user