~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to lib/mnesia/src/mnesia_loader.erl

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2010-03-09 17:34:57 UTC
  • mfrom: (10.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20100309173457-4yd6hlcb2osfhx31
Tags: 1:13.b.4-dfsg-3
Manpages in section 1 are needed even if only arch-dependent packages are
built. So, re-enabled them.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
%%
2
2
%% %CopyrightBegin%
3
 
%% 
4
 
%% Copyright Ericsson AB 1998-2009. All Rights Reserved.
5
 
%% 
 
3
%%
 
4
%% Copyright Ericsson AB 1998-2010. All Rights Reserved.
 
5
%%
6
6
%% The contents of this file are subject to the Erlang Public License,
7
7
%% Version 1.1, (the "License"); you may not use this file except in
8
8
%% compliance with the License. You should have received a copy of the
9
9
%% Erlang Public License along with this software. If not, it can be
10
10
%% retrieved online at http://www.erlang.org/.
11
 
%% 
 
11
%%
12
12
%% Software distributed under the License is distributed on an "AS IS"
13
13
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
14
14
%% the License for the specific language governing rights and limitations
15
15
%% under the License.
16
 
%% 
 
16
%%
17
17
%% %CopyrightEnd%
18
18
%%
19
19
 
438
438
 
439
439
get_data(Pid, TabRec) ->
440
440
    receive 
 
441
        {Pid, {more_z, CompressedRecs}} when is_binary(CompressedRecs) ->
 
442
            Pid ! {TabRec, more},
 
443
            {zlib_uncompress(CompressedRecs), make_table_fun(Pid,TabRec)};
441
444
        {Pid, {more, Recs}} ->
442
445
            Pid ! {TabRec, more},
443
446
            {Recs, make_table_fun(Pid,TabRec)};
769
772
        Else -> Else
770
773
    end.            
771
774
 
 
775
zlib_compress(Data, Level) ->
 
776
    BinData = term_to_binary(Data),
 
777
    Z = zlib:open(),
 
778
    zlib:deflateInit(Z, Level),
 
779
    Bs = zlib:deflate(Z, BinData, finish),
 
780
    zlib:deflateEnd(Z),
 
781
    zlib:close(Z),
 
782
    list_to_binary(Bs).
 
783
 
 
784
zlib_uncompress(Data) when is_binary(Data) ->
 
785
    binary_to_term(zlib:uncompress(Data)).
 
786
 
 
787
compression_level() ->
 
788
    NoCompression = 0,
 
789
    case ?catch_val(send_compressed) of
 
790
        {'EXIT', _} ->
 
791
            mnesia_lib:set(send_compressed, NoCompression),
 
792
            NoCompression;
 
793
        Val -> Val
 
794
    end.
 
795
 
772
796
send_packet(N, Pid, _Chunk, '$end_of_table', OldNode) ->
773
797
    case OldNode of
774
798
        true -> ignore; %% Old nodes can't handle the new no_more
779
803
    send_packet(N, Pid, Chunk, Chunk(Cont), OldNode);
780
804
send_packet(N, Pid, Chunk, {Recs, Cont}, OldNode) when N < ?MAX_NOPACKETS ->
781
805
    case OldNode of
782
 
        true -> Pid ! {self(), {more, [Recs]}}; %% Old need's wrapping list
783
 
        false -> Pid ! {self(), {more, Recs}}
 
806
        true ->
 
807
            Pid ! {self(), {more, [Recs]}}; %% Old need's wrapping list
 
808
        false ->
 
809
            case compression_level() of
 
810
                0 ->
 
811
                    Pid ! {self(), {more, Recs}};
 
812
                Level ->
 
813
                    Pid ! {self(), {more_z, zlib_compress(Recs, Level)}}
 
814
            end
784
815
    end,
785
816
    send_packet(N+1, Pid, Chunk, Chunk(Cont), OldNode);
786
817
send_packet(_N, _Pid, _Chunk, DataState, _OldNode) ->