summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-05 16:13:56 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-05 16:13:56 +0200
commit97f7511e61cebae3676a83aa9c0dc2efb15d8d8c (patch)
treee1a72ea2778569fa87b999ef4ac7c4559bfd7e58 /src/battlemap
parent983ed9d0e8da15cb8c304fea62c25d3b053e712b (diff)
Kind of hacked around to get the db working.
It does seem to work, though.
Diffstat (limited to 'src/battlemap')
-rw-r--r--src/battlemap/mk/yaws.mk3
-rw-r--r--src/battlemap/src/handler.erl2
-rw-r--r--src/battlemap/src/query/character_turn.erl12
-rw-r--r--src/battlemap/src/shim/database_shim.erl66
-rw-r--r--src/battlemap/src/struct/character_turn_update.erl6
-rw-r--r--src/battlemap/src/struct/db_query.erl55
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}.