mirror of
https://github.com/ONLYOFFICE/server.git
synced 2026-04-07 14:04:35 +08:00
При отправлении на сохранение дожидаемся, пока данные запишутся в базу данных.
git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/nodeJSProjects@61881 954022d7-b5bf-4e40-9824-e11837661b57
This commit is contained in:
@ -102,6 +102,7 @@ var c_oAscServerCommandErrors = {
|
||||
};
|
||||
|
||||
var c_oAscSaveTimeOutDelay = 5000; // Время ожидания для сохранения на сервере (для отработки F5 в браузере)
|
||||
var c_oAscLockTimeOutDelay = 500; // Время ожидания для сохранения, когда зажата база данных
|
||||
|
||||
var c_oAscRecalcIndexTypes = {
|
||||
RecalcIndexAdd: 1,
|
||||
@ -625,9 +626,7 @@ exports.install = function (server, callbackFunction) {
|
||||
// Send changes to save server
|
||||
oPucker = objServicePucker[docId];
|
||||
if (oPucker && oPucker.inDataBase && 0 !== oPucker.index) {
|
||||
saveTimers[docId] = setTimeout(function () {
|
||||
sendChangesToServer(docId);
|
||||
}, c_oAscSaveTimeOutDelay);
|
||||
_createSaveTimer(docId);
|
||||
} else {
|
||||
// Отправляем, что все ушли и нет изменений (чтобы выставить статус на сервере об окончании редактирования)
|
||||
deletePucker(docId);
|
||||
@ -1488,6 +1487,18 @@ exports.install = function (server, callbackFunction) {
|
||||
return !isLock;
|
||||
}
|
||||
|
||||
function _createSaveTimer (docId) {
|
||||
var oTimeoutFunction = function () {
|
||||
if (sqlBase.isLockCriticalSection(docId))
|
||||
saveTimers[docId] = setTimeout(oTimeoutFunction, c_oAscLockTimeOutDelay);
|
||||
else {
|
||||
delete saveTimers[docId];
|
||||
sendChangesToServer(docId);
|
||||
}
|
||||
};
|
||||
saveTimers[docId] = setTimeout(oTimeoutFunction, c_oAscSaveTimeOutDelay);
|
||||
}
|
||||
|
||||
sockjs_echo.installHandlers(server, {prefix:'/doc/[0-9-.a-zA-Z_=]*/c', log:function (severity, message) {
|
||||
//TODO: handle severity
|
||||
logger.info(message);
|
||||
@ -1525,7 +1536,7 @@ exports.install = function (server, callbackFunction) {
|
||||
for (docId in objServiceInfo) {
|
||||
// Если есть информация для сборки, то запускаем. Иначе - удаляем подписчика? : ToDo
|
||||
if (objServicePucker[docId])
|
||||
saveTimers[docId] = createTimer(docId);
|
||||
_createSaveTimer(docId);
|
||||
else
|
||||
deleteCallback(docId);
|
||||
}
|
||||
|
||||
@ -154,6 +154,10 @@ exports.updateIndexUser = function (docId, indexUser) {
|
||||
baseConnector.sqlQuery(sqlCommand);
|
||||
};
|
||||
|
||||
exports.isLockCriticalSection = function (id) {
|
||||
return !!(g_oCriticalSection[id]);
|
||||
};
|
||||
|
||||
// Критическая секция
|
||||
function lockCriticalSection (id, callback) {
|
||||
if (g_oCriticalSection[id]) {
|
||||
|
||||
Reference in New Issue
Block a user