소스 검색

split unload function

dev_h
lovasoa 4 년 전
부모
커밋
9dc31c81f2
No account linked to committer's email address
1개의 변경된 파일21개의 추가작업 그리고 7개의 파일을 삭제
  1. 21
    7
      server/sockets.js

+ 21
- 7
server/sockets.js 파일 보기

@@ -4,7 +4,7 @@ var iolib = require("socket.io"),
4 4
   config = require("./configuration");
5 5
 
6 6
 /** Map from name to *promises* of BoardData
7
-  @type {Object<string, Promise<BoardData>>}
7
+  @type {{[boardName: string]: Promise<BoardData>}}
8 8
 */
9 9
 var boards = {};
10 10
 
@@ -143,18 +143,32 @@ function handleSocketConnection(socket) {
143 143
         var board = await boards[room];
144 144
         board.users.delete(socket.id);
145 145
         var userCount = board.users.size;
146
-        log("disconnection", { board: board.name, users: board.users.size, reason });
146
+        log("disconnection", {
147
+          board: board.name,
148
+          users: board.users.size,
149
+          reason,
150
+        });
147 151
         gauge("connected." + board.name, userCount);
148
-        if (userCount === 0) {
149
-          board.save();
150
-          delete boards[room];
151
-          gauge("boards in memory", Object.keys(boards).length);
152
-        }
152
+        if (userCount === 0) unloadBoard(room);
153 153
       }
154 154
     });
155 155
   });
156 156
 }
157 157
 
158
+/**
159
+ * Unloads a board from memory.
160
+ * @param {string} boardName
161
+ **/
162
+async function unloadBoard(boardName) {
163
+  if (boards.hasOwnProperty(boardName)) {
164
+    const board = await boards[boardName];
165
+    await board.save();
166
+    log("unload board", { board: board.name, users: board.users.size });
167
+    delete boards[boardName];
168
+    gauge("boards in memory", Object.keys(boards).length);
169
+  }
170
+}
171
+
158 172
 function handleMessage(boardName, message, socket) {
159 173
   if (message.tool === "Cursor") {
160 174
     message.socket = socket.id;

Loading…
취소
저장