Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / models / OnlineBattleGame.model
channel Signup {
	out accounts(acDB:Map, signUp(aid:Str, name:Str)) = insert(acDB, aid, {"name": name})
}

channel ChangeName(aid:Str) {
	out accounts.{aid}.name(prevName:Str, changeName(name)) = name
}

channel CreateRoom {
	out rooms(rmDB:Map, createRoom(rid:Str, blueId:Str, redId:Str)) = insert(rmDB, rid, {"blue_id": blueId, "red_id": redId})
}

channel ChangeRedId(rid:Str) {
	out rooms.{rid}.red_id(prevRedId:Str, changeRedId(redId)) = redId
}

channel ChangeBlueId(rid:Str) {
	out rooms.{rid}.blue_id(prevBlueId:Str, changeBlueId(blueId)) = blueId
}

channel UpdateRedName(rid:Str) {
    in rooms.{rid}.red_id(prevAid:Str, updateRedName(aid, name)) = aid 
    in accounts.{aid}.name(prevName:Str, updateRedName(aid, name)) = name
    out rooms.{rid}.red_name(prevName:Str, updateRedName(aid, name)) = name
}

channel UpdateBlueName(rid:Str) {
    in rooms.{rid}.blue_id(prevAid:Str, updateBlueName(aid, name)) = aid
    in accounts.{aid}.name(prevName:Str, updateBlueName(aid, name)) = name
    out rooms.{rid}.blue_name(prevName:Str, updateBlueName(aid, name)) = name
}