Quellcode durchsuchen

fixes #1348

tags/v0.4.3^2
Shaun Kichenbrand vor 4 Jahren
Ursprung
Commit
e189e08fb4
7 geänderte Dateien mit 43 neuen und 18 gelöschten Zeilen
  1. +1
    -1
      src/server/config/serverConfig.js
  2. +2
    -8
      src/server/mail/mailSqlite.js
  3. +0
    -3
      src/server/security/connections.js
  4. +1
    -1
      src/server/security/rest.js
  5. +0
    -5
      src/server/security/transactions.js
  6. +30
    -0
      src/server/world/atlas.js
  7. +9
    -0
      src/server/world/instancer.js

+ 1
- 1
src/server/config/serverConfig.js Datei anzeigen

@@ -8,7 +8,7 @@ module.exports = {
// sqlite
// rethink
//eslint-disable-next-line no-process-env
db: process.env.IWD_DB || 'rethink',
db: process.env.IWD_DB || 'sqlite',
//eslint-disable-next-line no-process-env
dbHost: process.env.IWD_DB_HOST || 'localhost',
//eslint-disable-next-line no-process-env


+ 2
- 8
src/server/mail/mailSqlite.js Datei anzeigen

@@ -138,20 +138,14 @@ module.exports = {
noParse: true
});

this.doSendMail(playerName, items, callback, result);
},

doSendMail: async function (playerName, items, callback, result) {
if (result === 'null')
result = null;

result = JSON.parse(result || '[]');

items.forEach(function (i) {
result.push(i);
});
result.push(...items);

let itemString = JSON.stringify(result).split('\'').join('`');
const itemString = JSON.stringify(result).split('\'').join('`');

await io.setAsync({
key: playerName,


+ 0
- 3
src/server/security/connections.js Datei anzeigen

@@ -56,9 +56,6 @@ module.exports = {
route: function (socket, msg) {
let player = null;

if (msg.method === 'performAction')
setTimeout(rest.forceSaveAll.bind(rest), 100);

if (msg.id) {
player = this.players.find(p => p.id === msg.id);
let source = this.players.find(p => p.socket.id === socket.id);


+ 1
- 1
src/server/security/rest.js Datei anzeigen

@@ -49,7 +49,7 @@ module.exports = {
if (roleLevel < 9)
return;*/

await transactions.returnWhenDone();
await atlas.returnWhenZonesIdle();

cons.emit('event', {
event: 'onGetMessages',


+ 0
- 5
src/server/security/transactions.js Datei anzeigen

@@ -6,7 +6,6 @@ const complete = id => {
};

const register = () => {
console.log('reg');
const nextId = ++lastId;
list.push(nextId);

@@ -14,21 +13,17 @@ const register = () => {
};

const returnWhenDone = async () => {
console.log('check');
if (!list.length)
return;

return new Promise(res => {
const checker = () => {
if (!list.length) {
console.log('ok');
res();

return;
}

console.log('nope');

setTimeout(checker, 100);
};



+ 30
- 0
src/server/world/atlas.js Datei anzeigen

@@ -5,6 +5,8 @@ let connections = require('../security/connections');
let serverConfig = require('../config/serverConfig');
let events = require('../misc/events');

const listenersOnZoneIdle = [];

module.exports = {
nextId: 0,
lastCallbackId: 0,
@@ -220,6 +222,34 @@ module.exports = {
serverObj.player.broadcastSelf();

this.addObject(obj, true, true);
},

onZoneIdle: function (thread) {
listenersOnZoneIdle.forEach(l => l(thread));
}
},

returnWhenZonesIdle: async function () {
return new Promise(res => {
const waiting = [...this.threads];

const onZoneIdle = thread => {
waiting.spliceWhere(w => w === thread);

if (waiting.length)
return;

listenersOnZoneIdle.spliceWhere(l => l === onZoneIdle);
res();
};

listenersOnZoneIdle.push(onZoneIdle);

this.threads.forEach(t => {
t.worker.send({
method: 'notifyOnceIdle'
});
});
});
}
};

+ 9
- 0
src/server/world/instancer.js Datei anzeigen

@@ -12,6 +12,7 @@ let scheduler = require('../misc/scheduler');
let mail = require('../mail/mail');
let herbs = require('../config/herbs');
let eventEmitter = require('../misc/events');
const transactions = require('../security/transactions');

module.exports = {
instances: [],
@@ -211,5 +212,13 @@ module.exports = {
}
});
}
},

notifyOnceIdle: async function () {
await transactions.returnWhenDone();

process.send({
method: 'onZoneIdle'
});
}
};

Laden…
Abbrechen
Speichern