-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroom_service.go
70 lines (60 loc) · 1.53 KB
/
room_service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package goroomlib
type RoomService struct {
roomMap map[string]Room
numRoomsCreated int
}
func (rs *RoomService) Init() {
rs.roomMap = make(map[string]Room)
rs.numRoomsCreated = 0
}
func (rs *RoomService) GetRoomMap() map[string]Room {
return rs.roomMap
}
func (rs *RoomService) CreateRoom(roomName string, maxUsers int, roomProperties map[string]interface{}) Room {
room := Room{id: rs.numRoomsCreated + 1, name: roomName, maxUserCount: maxUsers}
room.Init(roomProperties)
rs.numRoomsCreated += 1
rs.addRoom(room)
return room
}
func (rs *RoomService) addRoom(room Room) {
rs.roomMap[room.GetRoomName()] = room
}
func (rs *RoomService) RemoveRoom(roomName string) {
room, ok := rs.roomMap[roomName]
if ok == true {
room.RemoveAllUsers()
}
delete(rs.roomMap, roomName)
}
func (rs *RoomService) GetRoomByName(roomName string) (Room, bool) {
room, ok := rs.roomMap[roomName]
return room, ok
}
func (rs *RoomService) GetUserForRoom(roomName string) map[string]User {
room, ok := rs.roomMap[roomName]
if ok == true {
return room.GetUserMap()
}
return nil
}
func (rs *RoomService) AddUserToRoom(user User, roomName string) bool {
room, ok := rs.roomMap[roomName]
if ok == true {
userCount := len(room.usersMap)
if userCount == room.maxUserCount {
return false
}
room.AddUserToRoom(user)
return true
}
return false
}
func (rs *RoomService) RemoveUserFromRoom(user User, roomName string) bool {
room, ok := rs.roomMap[roomName]
if ok == true {
room.RemoveUserFromRoom(user)
return true
}
return false
}