mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-29 11:55:40 +02:00
[388873][dstore] ServerUpdateHandler _senders list should be synchronized
This commit is contained in:
parent
3a3dfc33f2
commit
21408f6fe9
1 changed files with 65 additions and 46 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2011 IBM Corporation and others.
|
* Copyright (c) 2002, 2012 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -16,6 +16,7 @@
|
||||||
* David McKnight (IBM) - [225507][api][breaking] RSE dstore API leaks non-API types
|
* David McKnight (IBM) - [225507][api][breaking] RSE dstore API leaks non-API types
|
||||||
* David McKnight (IBM) [246826][dstore] KeepAlive does not work correctly
|
* David McKnight (IBM) [246826][dstore] KeepAlive does not work correctly
|
||||||
* David McKnight (IBM) - [358301] [DSTORE] Hang during debug source look up
|
* David McKnight (IBM) - [358301] [DSTORE] Hang during debug source look up
|
||||||
|
* David McKnight (IBM) [388873][dstore] ServerUpdateHandler _senders list should be synchronized
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.dstore.internal.core.server;
|
package org.eclipse.dstore.internal.core.server;
|
||||||
|
@ -159,8 +160,10 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
*/
|
*/
|
||||||
public void addSender(Sender sender)
|
public void addSender(Sender sender)
|
||||||
{
|
{
|
||||||
|
synchronized(_senders){
|
||||||
_senders.add(sender);
|
_senders.add(sender);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a sender from the list of senders.
|
* Remove a sender from the list of senders.
|
||||||
|
@ -168,7 +171,9 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
*/
|
*/
|
||||||
public void removeSender(Sender sender)
|
public void removeSender(Sender sender)
|
||||||
{
|
{
|
||||||
|
synchronized (_senders){
|
||||||
_senders.remove(sender);
|
_senders.remove(sender);
|
||||||
|
}
|
||||||
if (_senders.size() == 0)
|
if (_senders.size() == 0)
|
||||||
{
|
{
|
||||||
finish();
|
finish();
|
||||||
|
@ -208,12 +213,14 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
document.setPendingTransfer(true);
|
document.setPendingTransfer(true);
|
||||||
document.setParent(null);
|
document.setParent(null);
|
||||||
|
|
||||||
|
synchronized (_senders){
|
||||||
for (int j = 0; j < _senders.size(); j++)
|
for (int j = 0; j < _senders.size(); j++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender) _senders.get(j);
|
Sender sender = (Sender) _senders.get(j);
|
||||||
sender.sendFile(document, bytes, size, binary);
|
sender.sendFile(document, bytes, size, binary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Appends bytes to the specified file on the client.
|
* Appends bytes to the specified file on the client.
|
||||||
|
@ -246,13 +253,14 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
document.setAttribute(DE.A_SOURCE, path);
|
document.setAttribute(DE.A_SOURCE, path);
|
||||||
document.setPendingTransfer(true);
|
document.setPendingTransfer(true);
|
||||||
document.setParent(null);
|
document.setParent(null);
|
||||||
|
synchronized (_senders){
|
||||||
for (int j = 0; j < _senders.size(); j++)
|
for (int j = 0; j < _senders.size(); j++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender) _senders.get(j);
|
Sender sender = (Sender) _senders.get(j);
|
||||||
sender.sendAppendFile(document, bytes, size, binary);
|
sender.sendAppendFile(document, bytes, size, binary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -287,6 +295,7 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
|
|
||||||
_commandGenerator.generateResponse(document, _dataObjects);
|
_commandGenerator.generateResponse(document, _dataObjects);
|
||||||
|
|
||||||
|
synchronized (_senders){
|
||||||
for (int j = 0; j < _senders.size(); j++)
|
for (int j = 0; j < _senders.size(); j++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender) _senders.get(j);
|
Sender sender = (Sender) _senders.get(j);
|
||||||
|
@ -302,6 +311,7 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
_pendingKeepAliveRequest = null;
|
_pendingKeepAliveRequest = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < _dataObjects.size(); i++)
|
for (int i = 0; i < _dataObjects.size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -322,6 +332,7 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
synchronized (_classesToSend)
|
synchronized (_classesToSend)
|
||||||
{
|
{
|
||||||
document = (DataElement)_classesToSend.remove(0);
|
document = (DataElement)_classesToSend.remove(0);
|
||||||
|
synchronized (_senders){
|
||||||
for (int i = 0; i < _senders.size(); i++)
|
for (int i = 0; i < _senders.size(); i++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender) _senders.get(i);
|
Sender sender = (Sender) _senders.get(i);
|
||||||
|
@ -329,6 +340,7 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,6 +352,7 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
*/
|
*/
|
||||||
public void removeSenderWith(Socket socket)
|
public void removeSenderWith(Socket socket)
|
||||||
{
|
{
|
||||||
|
synchronized (_senders){
|
||||||
for (int i = 0; i < _senders.size(); i++)
|
for (int i = 0; i < _senders.size(); i++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender) _senders.get(i);
|
Sender sender = (Sender) _senders.get(i);
|
||||||
|
@ -352,6 +365,7 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implemented to provide the means by which classes are sent
|
* Implemented to provide the means by which classes are sent
|
||||||
|
@ -367,12 +381,13 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
document.setParent(null);
|
document.setParent(null);
|
||||||
//DataElement document = _dataStore.createObject(null, DataStoreResources.REQUEST_CLASS_TYPE, className);
|
//DataElement document = _dataStore.createObject(null, DataStoreResources.REQUEST_CLASS_TYPE, className);
|
||||||
|
|
||||||
|
synchronized (_senders){
|
||||||
for (int j = 0; j < _senders.size(); j++)
|
for (int j = 0; j < _senders.size(); j++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender) _senders.get(j);
|
Sender sender = (Sender) _senders.get(j);
|
||||||
sender.requestClass(document);
|
sender.requestClass(document);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -384,11 +399,13 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
document.setPendingTransfer(true);
|
document.setPendingTransfer(true);
|
||||||
document.setParent(null);
|
document.setParent(null);
|
||||||
|
|
||||||
|
synchronized (_senders){
|
||||||
for (int j = 0; j < _senders.size(); j++)
|
for (int j = 0; j < _senders.size(); j++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender) _senders.get(j);
|
Sender sender = (Sender) _senders.get(j);
|
||||||
sender.sendRemoteClassRunnable(document, runnable);
|
sender.sendRemoteClassRunnable(document, runnable);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
notifyInput();
|
notifyInput();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,10 +494,12 @@ public class ServerUpdateHandler extends UpdateHandler
|
||||||
*/
|
*/
|
||||||
public void setGenerateBuffer(boolean flag)
|
public void setGenerateBuffer(boolean flag)
|
||||||
{
|
{
|
||||||
|
synchronized (_senders){
|
||||||
for (int i = 0; i < _senders.size(); i++)
|
for (int i = 0; i < _senders.size(); i++)
|
||||||
{
|
{
|
||||||
Sender sender = (Sender)_senders.get(i);
|
Sender sender = (Sender)_senders.get(i);
|
||||||
sender.setGenerateBuffer(flag);
|
sender.setGenerateBuffer(flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue