func (usr *User) String() string { jsonContent, err := json.Marshal(usr) if err != nil { logger.Error("User::String - Erreur lors de la sérialisation d'un message", err) } return string(jsonContent[:]) }
func (room *Room) getFromDb(key string) { encodedRoom := db.Db.Get(db.RoomBucket, key) err := json.Unmarshal(encodedRoom, room) if err != nil { logger.Error("Désérialisation d'une room", err) } }
// ToString Convertit l'objet Message en string func (message *SendMessage) String() string { jsonContent, err := json.Marshal(message) if err != nil { logger.Error("Erreur lors de la sérialisation d'un message", err) } return string(jsonContent[:]) }
// String Convertit l'objet LoginReply en string func (reply *LoginReply) String() string { jsonContent, err := json.Marshal(reply) if err != nil { logger.Error("Erreur lors de la sérialisation d'un message", err) } return string(jsonContent[:]) }
func (user *User) getFromDb(key string) { encodedUser := db.Db.Get(db.UserBucket, key) err := json.Unmarshal(encodedUser, user) if err != nil { logger.Error("Désérialisation d'un utilisateur - ", err) } }
// GetMessageObject Retourne l'objet Message à partir du message reçu par un client func GetMessageObject(message string) ReceiveMessage { var chatMessage ReceiveMessage err := json.Unmarshal([]byte(message), &chatMessage) if err != nil { logger.Error("Erreur lors de la désérialisation d'un message", err) } return chatMessage }
// GetLoginRequest Retourne la requête de connexion associée au message func GetLoginRequest(message string) LoginRequest { var request LoginRequest err := json.Unmarshal([]byte(message), &request) if err != nil { logger.Error("Erreur lors de la désérialisation d'une demande de connexion", err) } return request }
// GetChangeRoomRequest Retourne la requête de changement de salle associée au message func GetChangeRoomRequest(message string) ChangeRoomRequest { var request ChangeRoomRequest err := json.Unmarshal([]byte(message), &request) if err != nil { logger.Error("Erreur lors de la désérialisation d'un changement de salle", err) } return request }
func (dbManager *DbManager) CreateBucket(bucketName string) { dbManager.db.Update(func(tx *bolt.Tx) error { _, err := tx.CreateBucketIfNotExists([]byte(bucketName)) if err != nil { logger.Error("Erreur lors de la création du bucket Room", err) } return nil }) }
func (room *Room) GetMessages() []message.SendMessage { messages := db.Db.GetElementsFromBucket(db.MessageBucketPrefix + room.Name) var messagesToSend []message.SendMessage for _, m := range messages { var mess message.SendMessage err := json.Unmarshal([]byte(m), &mess) if err != nil { logger.Error("Désérialisation d'un message", err) } mess.DetectAndAddEmoticonsInMessage() messagesToSend = append(messagesToSend, mess) } return messagesToSend }
//Init initialise la liste des salles func (roomList *RoomList) Init() { roomList.rooms = make(map[string]*Room) rooms := db.Db.GetElementsFromBucket(db.RoomBucket) for _, room := range rooms { var roomFields map[string]string err := json.Unmarshal([]byte(room), &roomFields) if err != nil { logger.Error("Erreur lors de la désérilisation des salles de la bd", err) } roomName := roomFields["Name"] var roomUsers map[string]*user.User roomList.rooms[roomName] = &Room{roomName, roomUsers} roomList.rooms[roomName].Init(roomName) } }
func (server *Server) changeUserRoom(u *user.User, roomName string) { logger.Print("Changement de salle : " + roomName) socket := *u.Socket oldRoom := u.Room if server.roomList.RemoveUserFromRoom(u) { socket.BroadcastTo(oldRoom, "userLeft", "{\"Login\": \""+u.Login+"\"}") socket.Leave(oldRoom) } newRoomCreated := false if !server.roomList.Exist(roomName) { server.roomList.AddRoom(roomName) newRoomCreated = true rooms := server.roomList.GetRoomsTab() for _, value := range rooms { err := socket.BroadcastTo(value, "newRoom", "{\"Name\":\""+roomName+"\"}") if err != nil { logger.Error("newRoom - ", err) } } } success := false if server.roomList.AddUserInRoom(u, roomName) == nil { socket.Join(roomName) socket.BroadcastTo(roomName, "newUser", "{\"Login\": \""+u.Login+"\",\"GravatarLink\": \""+u.GravatarLink+"\"}") success = true } var reply room.ChangeRoomReply newRoom := server.roomList.GetRoom(roomName) if newRoom != nil { reply = room.ChangeRoomReply{success, roomName, newRoomCreated, newRoom.GetUsersDetails(), newRoom.GetMessages()} } else { reply = room.ChangeRoomReply{success, roomName, newRoomCreated, nil, nil} } time.Sleep(500 * time.Millisecond) socket.Emit("changeRoom", reply.ToString()) }
//AddValue ajoute dans la BD func (dbManager *DbManager) AddValue(bucketName string, key string, object fmt.Stringer) error { err := dbManager.db.Update(func(tx *bolt.Tx) error { bucket, err := tx.CreateBucketIfNotExists([]byte(bucketName)) if err != nil { return err } encoded := object.String() return bucket.Put([]byte(key), []byte(encoded)) }) if err == nil { logger.Print("Ajout de " + key + " dans la bd") } else { logger.Error("Erreur lors de l'ajout dans la bd", err) } return nil }