| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battlemap')
| -rw-r--r-- | src/battlemap/mk/yaws.mk | 3 | ||||
| -rw-r--r-- | src/battlemap/src/handler.erl | 2 | ||||
| -rw-r--r-- | src/battlemap/src/query/character_turn.erl | 12 | ||||
| -rw-r--r-- | src/battlemap/src/shim/database_shim.erl | 66 | ||||
| -rw-r--r-- | src/battlemap/src/struct/character_turn_update.erl | 6 | ||||
| -rw-r--r-- | src/battlemap/src/struct/db_query.erl | 55 | 
6 files changed, 55 insertions, 89 deletions
| diff --git a/src/battlemap/mk/yaws.mk b/src/battlemap/mk/yaws.mk index eb120c1..a68edf2 100644 --- a/src/battlemap/mk/yaws.mk +++ b/src/battlemap/mk/yaws.mk @@ -5,6 +5,7 @@ YAWS_CONF ?= ${CURDIR}/yaws.conf  YAWS_API_HEADER ?= /my/src/yaws/include/yaws_api.hrl  YAWS ?= yaws +YAWS_OPTS ?= -name battlemap_node -erlarg "-connect_all false"  ################################################################################  ## MAKEFILE MAGIC ############################################################## @@ -19,7 +20,7 @@ YAWS_API_HEADER ?= /my/src/yaws/include/yaws_api.hrl  ## TARGET RULES ################################################################  ################################################################################  yaws_run: build $(WWW_DIR) $(LOG_DIR) -	$(YAWS) --conf $(YAWS_CONF) +	$(YAWS) --conf $(YAWS_CONF) $(YAWS_OPTS)  ################################################################################  ## INTERNAL RULES ############################################################## diff --git a/src/battlemap/src/handler.erl b/src/battlemap/src/handler.erl index 0ecc8be..1b79b69 100644 --- a/src/battlemap/src/handler.erl +++ b/src/battlemap/src/handler.erl @@ -18,6 +18,6 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  start (_YawsParams) ->     {ok, Pid} = timed_caches_manager:start(), -   database_shim:generate_db(Pid), +   database_shim:generate_db(),     timed_caches_manager:new_cache(Pid, battle_db, none),     ok. diff --git a/src/battlemap/src/query/character_turn.erl b/src/battlemap/src/query/character_turn.erl index a4b69a2..a10cda7 100644 --- a/src/battlemap/src/query/character_turn.erl +++ b/src/battlemap/src/query/character_turn.erl @@ -177,18 +177,12 @@ update_data (Data, Request) ->  send_to_database (Update, Request) ->     PlayerID = character_turn_request:get_player_id(Request),     BattleID = character_turn_request:get_battle_id(Request), -   Data = character_turn_update:get_data(Update), -   Battle = character_turn_data:get_battle(Data), +   Ops = character_turn_update:get_db(Update), +   Query = db_query:new(battle_db, BattleID, {user, PlayerID}, Ops),     % TODO: send queries to an actual DB... -   database_shim:commit -   ( -      battle_db, -      PlayerID, -      BattleID, -      Battle -   ), +   database_shim:commit(Query),     ok. diff --git a/src/battlemap/src/shim/database_shim.erl b/src/battlemap/src/shim/database_shim.erl index cc653ad..c64105d 100644 --- a/src/battlemap/src/shim/database_shim.erl +++ b/src/battlemap/src/shim/database_shim.erl @@ -10,36 +10,17 @@  -export  (     [ -      generate_db/1, +      generate_db/0,        fetch/2, -      commit/4 +      commit/1     ]  ).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec create_db (pid()) -> 'ok'. -create_db (_Heir) -> -   ets:new -   ( -      db_shim, -      [ -         set, -         public, -         named_table, -         {keypos, 1}, -         {read_concurrency, true} -      ] -   ), -   io:format("~ndb_shim ets created.~n"), -   ok. - --spec add_to_db (any(), any()) -> 'ok'. -add_to_db (ID, Val) -> -   io:format("~nadd to db_shim: ~p.~n", [{ID, Val}]), -   ets:insert(db_shim, {ID, Val}), -   ok. +get_db_node () -> +   list_to_atom("db_node@" ++ net_adm:localhost()).  -spec generate_random_characters     ( @@ -122,13 +103,8 @@ generate_random_characters  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec generate_db (pid()) -> 'ok'. -generate_db (Heir) -> -   Pid = self(), -   spawn(fun () -> create_db(Heir), Pid ! ok, receive ok -> ok end end), -   receive -      ok -> ok -   end, +-spec generate_db () -> 'ok'. +generate_db () ->     BattlemapWidth = roll:between(16, 64),     BattlemapHeight = roll:between(16, 64),     Battlemap = battlemap:random(0, BattlemapWidth, BattlemapHeight), @@ -136,16 +112,26 @@ generate_db (Heir) ->     PlayersAsList = [player:new(<<"0">>), player:new(<<"1">>)],     Battle = battle:new(<<"0">>, PlayersAsList, Battlemap, Characters), -   add_to_db({battle_db, <<"0">>}, Battle). +   {atomic, ok} = +      rpc:call +      ( +         get_db_node(), +         storage_access, +         insert, +         [battle_db, <<"0">>, any, Battle] +      ), + +   ok. --spec fetch (atom(), any()) -> ({'ok', any()} | 'nothing'). +-spec fetch (atom(), any()) -> ({'ok', any()} | 'not_found').  fetch (DB, ObjectID) -> -   io:format("~ndb_shim lookup: ~p.~n", [{DB, ObjectID}]), -   case ets:lookup(db_shim, {DB, ObjectID}) of -      [{_Key, Value}] -> {ok, Value}; -      [] -> nothing -   end. +   {atomic, Reply} = +      rpc:call(get_db_node(), storage_access, read, [DB, ObjectID]), +   io:format("~ndb_shim:fetch(~p) -> ~p.~n", [{DB, ObjectID}, Reply]), +   Reply. --spec commit (atom(), any(), any(), any()) -> 'ok'. -commit (DB, _Owner, ObjectID, Value) -> -   add_to_db({DB, ObjectID}, Value). +-spec commit (db_query:type()) -> 'ok'. +commit (Query) -> +   {atomic, ok} = rpc:call(get_db_node(), storage_access, query, [Query]), +   io:format("~ndb_shim:commit(~p) -> ok.~n", [Query]), +   ok. diff --git a/src/battlemap/src/struct/character_turn_update.erl b/src/battlemap/src/struct/character_turn_update.erl index a3aa819..07cb562 100644 --- a/src/battlemap/src/struct/character_turn_update.erl +++ b/src/battlemap/src/struct/character_turn_update.erl @@ -9,7 +9,7 @@     {        data :: character_turn_data:type(),        timeline :: list(any()), -      db :: list(db_query:type()) +      db :: list(db_query:op())     }  ). @@ -57,7 +57,7 @@ get_data (Update) -> Update#type.data.  -spec get_timeline (type()) -> list(any()).  get_timeline (Update) -> Update#type.timeline. --spec get_db (type()) -> list(any()). +-spec get_db (type()) -> list(db_query:op()).  get_db (Update) -> Update#type.db.  -spec set_data (character_turn_data:type(), type()) -> type(). @@ -68,6 +68,6 @@ set_data (Data, Update) ->  add_to_timeline (Item, Update) ->     Update#type{ timeline = [turn_result:encode(Item)|Update#type.timeline] }. --spec add_to_db (db_query:type(), type()) -> type(). +-spec add_to_db (db_query:op(), type()) -> type().  add_to_db (Item, Update) ->     Update#type{ db = [Item|Update#type.db] }. diff --git a/src/battlemap/src/struct/db_query.erl b/src/battlemap/src/struct/db_query.erl index bf4b0f3..5d1e8d2 100644 --- a/src/battlemap/src/struct/db_query.erl +++ b/src/battlemap/src/struct/db_query.erl @@ -3,45 +3,20 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% --record -( -   set_field, -   { -      field :: non_neg_integer(), -      value :: any() -   } -). +-include("../../../db/include/db_query.hrl"). --record -( -   add_to_field, -   { -      field :: non_neg_integer(), -      values :: list(any()) -   } -). - --record -( -   update_indexed, -   { -      field :: non_neg_integer(), -      ix :: non_neg_integer(), -      update :: list(type()) -   } -). - --opaque type() :: (#update_indexed{} | #set_field{} | #add_to_field{}). +-opaque op() :: db_query_op(). +-opaque type() :: db_query().  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export_type([type/0]). +-export_type([type/0, op/0]).  -export  (     [ +      new/4,        set_field/2,        add_to_field/2,        update_indexed/3 @@ -55,11 +30,21 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec set_field (non_neg_integer(), any()) -> type(). +-spec new (atom(), any(), db_user:user(), list(op())) -> type(). +new (DBName, ObjectID, User, Ops) -> +   #db_query +   { +      db = DBName, +      id = ObjectID, +      user = User, +      ops = Ops +   }. + +-spec set_field (non_neg_integer(), any()) -> op().  set_field (Field, Value) ->     #set_field { field = Field, value = Value }. --spec add_to_field (non_neg_integer(), list(any())) -> type(). +-spec add_to_field (non_neg_integer(), list(any())) -> op().  add_to_field (Field, Values) ->     #add_to_field { field = Field, values = Values }. @@ -67,8 +52,8 @@ add_to_field (Field, Values) ->     (        non_neg_integer(),        non_neg_integer(), -      list(type()) +      list(op())     ) -   -> type(). +   -> op().  update_indexed (Field, IX, Updates) -> -   #update_indexed { field = Field, ix = IX, update = Updates}. +   #update_indexed { field = Field, ix = IX, ops = Updates}. | 


