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

« back to all changes in this revision

Viewing changes to lib/gs/src/gs_frontend.erl

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
-module(gs_frontend).
24
24
 
25
 
-compile(export_all).
 
25
-export([create/2,
 
26
         config/2,
 
27
         read/2,
 
28
         destroy/2,
 
29
         info/1,
 
30
         start/1,
 
31
         stop/0,
 
32
         init/1,
 
33
         event/3]).
 
34
 
26
35
 
27
36
-include("gstk.hrl").
28
37
 
105
114
    process_flag(trap_exit, true),
106
115
    DB=ets:new(gs_names,[set,public]),
107
116
    loop(#state{db=DB,self=self()}).
108
 
    
 
117
 
109
118
loop(State) ->
110
119
    receive
111
120
        X ->
112
 
%           io:format("frontend received: ~p~n",[X]),
 
121
                                                %           io:format("frontend received: ~p~n",[X]),
113
122
            case catch (doit(X,State)) of
114
123
                done -> loop(State);
115
124
                NewState when record(NewState,state) ->
155
164
                   end,
156
165
    if NameOccupied == true ->
157
166
            reply(FromOwner, {error,{name_occupied,Name}});
158
 
        true -> 
 
167
       true -> 
159
168
            case idOrName_to_id(DB,Parent,FromOwner) of
160
169
                undefined ->
161
170
                    reply(FromOwner, {error,{no_such_parent,Parent}});
162
171
                ParentObj ->
163
172
                    {Id,NewState} = inc(ParentObj,State),
164
173
                    case gstk:create(backend(State,ParentObj),
165
 
                                    {FromOwner,{Objtype,Id,ParentObj,Opts}}) of
 
174
                                     {FromOwner,{Objtype,Id,ParentObj,Opts}}) of
166
175
                        ok ->
167
176
                            link(FromOwner),
168
177
                            if Name == undefined ->
169
178
                                    ets:insert(DB,{Id,lives}),
170
179
                                    reply(FromOwner, Id),
171
180
                                    NewState;
172
 
                                true -> % it's a real name, register it
 
181
                               true -> % it's a real name, register it
173
182
                                    NamePid = {Name,FromOwner},
174
183
                                    ets:insert(DB,{NamePid,Id}),
175
184
                                    ets:insert(DB,{Id,NamePid}),
292
301
terminate(_Reason,#state{db=DB}) ->
293
302
    if DB==undefined -> ok;
294
303
       true ->
295
 
%           io:format("frontend db:~p~n",[ets:tab2list(DB)])
296
 
         ok
 
304
                                                %           io:format("frontend db:~p~n",[ets:tab2list(DB)])
 
305
            ok
297
306
    end.
298
307
 
299
308
 
336
345
    end,
337
346
    remove_objs(DB,Objs);
338
347
remove_objs(_DB,[]) -> done.
339
 
            
 
348
 
340
349
idOrName_to_id(DB,IdOrName,Pid) when atom(IdOrName) ->
341
350
    case ets:lookup(DB,{IdOrName,Pid}) of
342
351
        [{_,Obj}] -> Obj;
347
356
        [_] -> Obj;
348
357
        _ -> undefined
349
358
    end.
350
 
    
 
359
 
351
360
 
352
361
 
353
362