diff options
author | Michi Henning <michi@zeroc.com> | 2003-07-02 00:53:13 +0000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2003-07-02 00:53:13 +0000 |
commit | 05ecde31cd6bde0ce1eebb7a7b123d4b3a23712d (patch) | |
tree | 104c46e23c2621f45f17fcf017569818ee795332 /java/src | |
parent | comments (diff) | |
download | ice-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.java | 30 | ||||
-rw-r--r-- | java/src/IceInternal/Instance.java | 23 |
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; |