summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2003-07-02 00:53:13 +0000
committerMichi Henning <michi@zeroc.com>2003-07-02 00:53:13 +0000
commit05ecde31cd6bde0ce1eebb7a7b123d4b3a23712d (patch)
tree104c46e23c2621f45f17fcf017569818ee795332 /java/src
parentcomments (diff)
downloadice-05ecde31cd6bde0ce1eebb7a7b123d4b3a23712d.tar.bz2
ice-05ecde31cd6bde0ce1eebb7a7b123d4b3a23712d.tar.xz
ice-05ecde31cd6bde0ce1eebb7a7b123d4b3a23712d.zip
Changed implementation of Ice.MessageSizeMax property: no longer a static
value now and initialized in Instance.
Diffstat (limited to 'java/src')
-rw-r--r--java/src/IceInternal/BasicStream.java30
-rw-r--r--java/src/IceInternal/Instance.java23
2 files changed, 28 insertions, 25 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java
index 0701767214c..353853db967 100644
--- a/java/src/IceInternal/BasicStream.java
+++ b/java/src/IceInternal/BasicStream.java
@@ -34,27 +34,7 @@ public class BasicStream
_traceSlicing = -1;
- synchronized(bufSize)
- {
- if(bufSize.value == 0)
- {
- final int defaultSize = 1024; // Default size in kilobytes.
- int num = _instance.properties().getPropertyAsInt("Ice.MessageSizeMax");
- if(num < 1)
- {
- bufSize.value = defaultSize;
- }
- else if(num > 0x7fffffff / 1024)
- {
- bufSize.value = 0x7fffffff/ 1024;
- }
- else
- {
- bufSize.value = num;
- }
- bufSize.value *= 1024; // Property value is in kilobytes, bufSize in bytes.
- }
- }
+ _messageSizeMax = _instance.messageSizeMax(); // Cached for efficiency.
}
/*
@@ -143,12 +123,10 @@ public class BasicStream
_writeSlice = tmpWriteSlice;
}
- private static Ice.IntHolder bufSize = new Ice.IntHolder(0);
-
public void
resize(int total, boolean reading)
{
- if(total > bufSize.value)
+ if(total > _messageSizeMax)
{
throw new Ice.MemoryLimitException();
}
@@ -1413,7 +1391,7 @@ public class BasicStream
{
int oldLimit = _limit;
_limit += size;
- if(_limit > bufSize.value)
+ if(_limit > _messageSizeMax)
{
throw new Ice.MemoryLimitException();
}
@@ -1638,4 +1616,6 @@ public class BasicStream
private int _traceSlicing;
private String _slicingCat;
+
+ private int _messageSizeMax;
}
diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java
index e6ab5414695..b6475e650ff 100644
--- a/java/src/IceInternal/Instance.java
+++ b/java/src/IceInternal/Instance.java
@@ -251,6 +251,13 @@ public class Instance
return _pluginManager;
}
+ public int
+ messageSizeMax()
+ {
+ // No mutex lock, immutable.
+ return _messageSizeMax;
+ }
+
public BufferManager
bufferManager()
{
@@ -290,6 +297,21 @@ public class Instance
_defaultsAndOverrides = new DefaultsAndOverrides(_properties);
+ final int defaultMessageSizeMax = 1024;
+ final int num = _properties.getPropertyAsIntWithDefault("Ice.MessageSizeMax", defaultMessageSizeMax);
+ if(num < 1)
+ {
+ _messageSizeMax = defaultMessageSizeMax; // Ignore stupid values.
+ }
+ else if(num > 0x7fffffff / 1024)
+ {
+ _messageSizeMax = 0x7fffffff;
+ }
+ else
+ {
+ _messageSizeMax = num * 1024; // Property is in kilobytes, _messageSizeMax in bytes
+ }
+
_routerManager = new RouterManager();
_locatorManager = new LocatorManager();
@@ -479,6 +501,7 @@ public class Instance
private Ice.Stats _stats; // Not reset by destroy().
private final TraceLevels _traceLevels; // Immutable, not reset by destroy().
private final DefaultsAndOverrides _defaultsAndOverrides; // Immutable, not reset by destroy().
+ private final int _messageSizeMax; // Immutable, not reset by destroy().
private RouterManager _routerManager;
private LocatorManager _locatorManager;
private ReferenceFactory _referenceFactory;