diff options
author | Marc Laukien <marc@zeroc.com> | 2001-09-25 23:29:39 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-09-25 23:29:39 +0000 |
commit | 9a5b8decaffd5b7276d571d2d1cf7dc527c9cd3d (patch) | |
tree | 919b333472a90ca5977e3c2786ad32a834e1fc5c /cpp | |
parent | fixes (diff) | |
download | ice-9a5b8decaffd5b7276d571d2d1cf7dc527c9cd3d.tar.bz2 ice-9a5b8decaffd5b7276d571d2d1cf7dc527c9cd3d.tar.xz ice-9a5b8decaffd5b7276d571d2d1cf7dc527c9cd3d.zip |
many, many freeze and other fixes
Diffstat (limited to 'cpp')
26 files changed, 380 insertions, 146 deletions
diff --git a/cpp/demo/Freeze/phonebook/.depend b/cpp/demo/Freeze/phonebook/.depend index 5e8ff59cb7c..7d81c011d48 100644 --- a/cpp/demo/Freeze/phonebook/.depend +++ b/cpp/demo/Freeze/phonebook/.depend @@ -1,9 +1,9 @@ -PhoneBook.o: PhoneBook.cpp PhoneBook.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Shared.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/LocalObject.h ../../../include/Ice/LocalException.h -Grammer.o: Grammer.cpp ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h Parser.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h -Scanner.o: Scanner.cpp ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h Parser.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h Grammer.h -Parser.o: Parser.cpp ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h Parser.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h -Client.o: Client.cpp Parser.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Config.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h -PhoneBookI.o: PhoneBookI.cpp PhoneBookI.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h ../../../include/IceUtil/IceUtil.h ../../../include/IceUtil/Functional.h ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h NameIdentitiesDict.h -NameIdentitiesDict.o: NameIdentitiesDict.cpp NameIdentitiesDict.h ../../../include/Freeze/DB.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h -ServantFactory.o: ServantFactory.cpp ServantFactory.h PhoneBookI.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h ../../../include/IceUtil/IceUtil.h ../../../include/IceUtil/Functional.h ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h NameIdentitiesDict.h -Server.o: Server.cpp ServantFactory.h PhoneBookI.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h ../../../include/IceUtil/IceUtil.h ../../../include/IceUtil/Functional.h ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h NameIdentitiesDict.h +PhoneBook.o: PhoneBook.cpp PhoneBook.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/Proxy.h ../../../include/IceUtil/Shared.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/LocalObject.h ../../../include/Ice/LocalException.h ../../../include/Freeze/DBException.h +Grammer.o: Grammer.cpp ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h Parser.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h +Scanner.o: Scanner.cpp ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h Parser.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h Grammer.h +Parser.o: Parser.cpp ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h Parser.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h +Client.o: Client.cpp Parser.h ../../../include/IceUtil/Handle.h ../../../include/IceUtil/Config.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h PhoneBook.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h +PhoneBookI.o: PhoneBookI.cpp PhoneBookI.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h ../../../include/IceUtil/IceUtil.h ../../../include/IceUtil/Functional.h ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h PhoneBook.h NameIdentitiesDict.h +NameIdentitiesDict.o: NameIdentitiesDict.cpp NameIdentitiesDict.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Freeze/DB.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h ../../../include/Freeze/DBF.h ../../../include/Freeze/EvictorF.h PhoneBook.h +ServantFactory.o: ServantFactory.cpp ServantFactory.h PhoneBookI.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h ../../../include/IceUtil/IceUtil.h ../../../include/IceUtil/Functional.h ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h PhoneBook.h NameIdentitiesDict.h +Server.o: Server.cpp ServantFactory.h PhoneBookI.h ../../../include/Ice/Ice.h ../../../include/Ice/Communicator.h ../../../include/Ice/ProxyF.h ../../../include/Ice/ProxyHandle.h ../../../include/Ice/Config.h ../../../include/IceUtil/Config.h ../../../include/Ice/ObjectF.h ../../../include/Ice/Handle.h ../../../include/IceUtil/Handle.h ../../../include/Ice/LocalObjectF.h ../../../include/Ice/Native.h ../../../include/Ice/LocalObject.h ../../../include/IceUtil/Shared.h ../../../include/Ice/LoggerF.h ../../../include/Ice/ObjectAdapterF.h ../../../include/Ice/PicklerF.h ../../../include/Ice/PropertiesF.h ../../../include/Ice/ServantFactoryF.h ../../../include/Ice/ObjectAdapter.h ../../../include/Ice/CommunicatorF.h ../../../include/Ice/LocalException.h ../../../include/Ice/Properties.h ../../../include/Ice/Logger.h ../../../include/Ice/ServantFactory.h ../../../include/Ice/Pickler.h ../../../include/Ice/Initialize.h ../../../include/Ice/InstanceF.h ../../../include/IceUtil/IceUtil.h ../../../include/IceUtil/Functional.h ../../../include/Freeze/Freeze.h ../../../include/Freeze/Initialize.h ../../../include/Freeze/DBF.h ../../../include/Freeze/DB.h ../../../include/Ice/Proxy.h ../../../include/Ice/ProxyFactoryF.h ../../../include/Ice/EmitterF.h ../../../include/Ice/ReferenceF.h ../../../include/Ice/Object.h ../../../include/Ice/Outgoing.h ../../../include/Ice/Stream.h ../../../include/Ice/Buffer.h ../../../include/Ice/Incoming.h ../../../include/Freeze/DBException.h ../../../include/Freeze/EvictorF.h ../../../include/Freeze/Evictor.h PhoneBook.h NameIdentitiesDict.h diff --git a/cpp/demo/Freeze/phonebook/Makefile b/cpp/demo/Freeze/phonebook/Makefile index d23d421acd3..0414c0ee54c 100644 --- a/cpp/demo/Freeze/phonebook/Makefile +++ b/cpp/demo/Freeze/phonebook/Makefile @@ -38,7 +38,7 @@ LDFLAGS := $(LDFLAGS) -L$(DB)/lib $(CLIENT): $(OBJS) $(COBJS) rm -f $@ - $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) $(LIBS) -lreadline -lcurses + $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) $(LIBS) -lFreeze -ldb -lreadline -lcurses $(SERVER): $(OBJS) $(SOBJS) rm -f $@ @@ -59,14 +59,14 @@ clean:: PhoneBook.h PhoneBook.cpp: PhoneBook.ice $(SLICE2CPP) rm -f PhoneBook.h PhoneBook.cpp - $(SLICE2CPP) PhoneBook.ice + $(SLICE2CPP) -I$(slicedir) PhoneBook.ice clean:: rm -f PhoneBook.h PhoneBook.cpp NameIdentitiesDict.h NameIdentitiesDict.cpp: PhoneBook.ice $(SLICE2FREEZE) rm -f NameIdentitiesDict.h NameIdentitiesDict.cpp - $(SLICE2FREEZE) --dict NameIdentitiesDict,string,Identities NameIdentitiesDict PhoneBook.ice + $(SLICE2FREEZE) -I$(slicedir) --dict NameIdentitiesDict,string,Identities NameIdentitiesDict PhoneBook.ice clean:: rm -f NameIdentitiesDict.h NameIdentitiesDict.cpp diff --git a/cpp/demo/Freeze/phonebook/Parser.cpp b/cpp/demo/Freeze/phonebook/Parser.cpp index 9b3d262b1ac..79b7480913b 100644 --- a/cpp/demo/Freeze/phonebook/Parser.cpp +++ b/cpp/demo/Freeze/phonebook/Parser.cpp @@ -18,6 +18,7 @@ using namespace std; using namespace Ice; +using namespace Freeze; extern FILE* yyin; @@ -38,7 +39,6 @@ Parser::usage() "address ADDRESS Set the address for the current contact to ADDRESS.\n" "phone PHONE Set the phone number for the current contact to PHONE.\n" "remove Permanently remove the current contact from the phonebook.\n" - "list List all names in the phonebook.\n" "shutdown Shut the phonebook server down.\n"; } @@ -66,6 +66,10 @@ Parser::addContacts(const std::list<std::string>& args) cout << "added new contact for `" << *p << "'" << endl; } } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); @@ -88,6 +92,10 @@ Parser::findContacts(const std::list<std::string>& args) cout << "number of contacts found: " << _foundContacts.size() << endl; printCurrent(); } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); @@ -121,6 +129,10 @@ Parser::printCurrent() cout << "no current contact" << endl; } } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); @@ -148,6 +160,10 @@ Parser::setCurrentName(const std::list<std::string>& args) cout << "no current contact" << endl; } } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); @@ -175,6 +191,10 @@ Parser::setCurrentAddress(const std::list<std::string>& args) cout << "no current contact" << endl; } } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); @@ -202,6 +222,10 @@ Parser::setCurrentPhone(const std::list<std::string>& args) cout << "no current contact" << endl; } } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); @@ -223,6 +247,10 @@ Parser::removeCurrent() cout << "no current contact" << endl; } } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); @@ -236,6 +264,10 @@ Parser::shutdown() { _phoneBook->shutdown(); } + catch(const DBExceptionPtrE& ex) + { + error(ex->message); + } catch(const LocalException& ex) { error(ex.toString()); diff --git a/cpp/demo/Freeze/phonebook/PhoneBook.ice b/cpp/demo/Freeze/phonebook/PhoneBook.ice index 16cd06c0236..97599ca7bd3 100644 --- a/cpp/demo/Freeze/phonebook/PhoneBook.ice +++ b/cpp/demo/Freeze/phonebook/PhoneBook.ice @@ -11,16 +11,18 @@ #ifndef PHONE_BOOK_ICE #define PHONE_BOOK_ICE +#include <Freeze/DBException.ice> + class Contact { - nonmutating string getName(); - void setName(string name); + nonmutating string getName() throws Freeze::DBException; + void setName(string name) throws Freeze::DBException; - nonmutating string getAddress(); - void setAddress(string address); + nonmutating string getAddress() throws Freeze::DBException; + void setAddress(string address) throws Freeze::DBException; - nonmutating string getPhone(); - void setPhone(string phone); + nonmutating string getPhone() throws Freeze::DBException; + void setPhone(string phone) throws Freeze::DBException; // // Yes, destroy() is nonmutating. It doesn't change the state of @@ -39,9 +41,9 @@ sequence<string> Identities; // Needed for slice2freeze interface PhoneBook { - Contact* createContact(); - Contacts findContacts(string name); - void shutdown(); + Contact* createContact() throws Freeze::DBException; + Contacts findContacts(string name) throws Freeze::DBException; + void shutdown() throws Freeze::DBException; }; #endif diff --git a/cpp/demo/Freeze/phonebook/PhoneBookI.cpp b/cpp/demo/Freeze/phonebook/PhoneBookI.cpp index e169b2f0809..5735dd6a9da 100644 --- a/cpp/demo/Freeze/phonebook/PhoneBookI.cpp +++ b/cpp/demo/Freeze/phonebook/PhoneBookI.cpp @@ -113,25 +113,16 @@ PhoneBookI::createContact() JTCSyncT<JTCRecursiveMutex> sync(*this); // TODO: Reader/Writer lock // - // Get a unique ID + // Get a new unique identity. // - string identity = "phonebook.contact#"; -#ifdef WIN32 // COMPILERBUG - char s[20]; - sprintf(s, "%I64d", _nextContactIdentity++); - identity += s; -#else - ostringstream s; - s << _nextContactIdentity++; - identity += s.str(); -#endif - + string identity = getNewIdentity(); + // // Create a new contact Servant. // ContactIPtr contact = new ContactI(this, _evictor); contact->setIdentity(identity); - + // // Create a new Ice Object in the evictor, using the new identity // and the new Servant. @@ -145,13 +136,13 @@ PhoneBookI::createContact() Identities identities; try { - identities = _nameIdentitiesDict->get(""); + identities = _nameIdentitiesDict->get("N"); } - catch(const DBNotFoundException&) + catch(const DBNotFoundExceptionPtrE&) { } identities.push_back(identity); - _nameIdentitiesDict->put("", identities); + _nameIdentitiesDict->put("N", identities); // // Turn the identity into a Proxy and return the Proxy to the @@ -172,9 +163,9 @@ PhoneBookI::findContacts(const string& name) Identities identities; try { - identities = _nameIdentitiesDict->get(name); + identities = _nameIdentitiesDict->get("N" + name); } - catch(const DBNotFoundException&) + catch(const DBNotFoundExceptionPtrE&) { } @@ -198,13 +189,20 @@ PhoneBookI::remove(const string& identity, const string& name) JTCSyncT<JTCRecursiveMutex> sync(*this); // TODO: Reader/Writer lock // - // We do not catch DBNotFoundException, because it is an + // We do not catch DBNotFoundExceptionPtrE, because it is an // application error if name is not found. // - Identities identities = _nameIdentitiesDict->get(name); + Identities identities = _nameIdentitiesDict->get("N" + name); identities.erase(remove_if(identities.begin(), identities.end(), bind2nd(equal_to<string>(), identity)), identities.end()); - _nameIdentitiesDict->put(name, identities); + if (identities.empty()) + { + _nameIdentitiesDict->del("N" + name); + } + else + { + _nameIdentitiesDict->put("N" + name, identities); + } } void @@ -219,11 +217,48 @@ PhoneBookI::move(const string& identity, const string& oldName, const string& ne Identities identities; try { - identities = _nameIdentitiesDict->get(newName); + identities = _nameIdentitiesDict->get("N" + newName); } - catch(const DBNotFoundException&) + catch(const DBNotFoundExceptionPtrE&) { } identities.push_back(identity); - _nameIdentitiesDict->put(newName, identities); + _nameIdentitiesDict->put("N" + newName, identities); } + +string +PhoneBookI::getNewIdentity() +{ + Ice::Long id; + Identities ids; + try + { + ids = _nameIdentitiesDict->get("ID"); + assert(ids.size() == 1); +#ifdef WIN32 + id = _atoi64(ids.front().c_str()) + 1; +#else + id = atoll(ids.front().c_str()) + 1; +#endif + } + catch(const DBNotFoundExceptionPtrE&) + { + id = 0; + } + + char s[20]; +#ifdef WIN32 + sprintf(s, "%I64d", id); +#else + sprintf(s, "%lld", id); +#endif + + ids.clear(); + ids.push_back(s); + _nameIdentitiesDict->put("ID", ids); + + return string("phonebook.contact#") + s; +} + + + diff --git a/cpp/demo/Freeze/phonebook/PhoneBookI.h b/cpp/demo/Freeze/phonebook/PhoneBookI.h index ed835f6c109..b214e479c9c 100644 --- a/cpp/demo/Freeze/phonebook/PhoneBookI.h +++ b/cpp/demo/Freeze/phonebook/PhoneBookI.h @@ -61,13 +61,13 @@ public: void remove(const std::string&, const std::string&); void move(const std::string&, const std::string&, const std::string&); + std::string getNewIdentity(); private: Ice::ObjectAdapterPtr _adapter; Freeze::DBPtr _db; Freeze::EvictorPtr _evictor; - Ice::Long _nextContactIdentity; NameIdentitiesDictPtr _nameIdentitiesDict; }; diff --git a/cpp/demo/Freeze/phonebook/config b/cpp/demo/Freeze/phonebook/config index dcd55eac7ea..3dc1130ff36 100644 --- a/cpp/demo/Freeze/phonebook/config +++ b/cpp/demo/Freeze/phonebook/config @@ -2,5 +2,5 @@ Ice.Adapter.PhoneBookAdapter.Endpoints=tcp -p 10000 PhoneBook.PhoneBook=phonebook:tcp -p 10000 PhoneBook.EvictorSize=3 #PhoneBook.SaveAfterMutatingOperation=1 -#Freeze.Trace.DB=1 +Freeze.Trace.DB=1 Freeze.Trace.Evictor=2 diff --git a/cpp/doc/Makefile b/cpp/doc/Makefile index f40e3100413..dbb573a7103 100644 --- a/cpp/doc/Makefile +++ b/cpp/doc/Makefile @@ -25,6 +25,7 @@ SLICEFILES = ../slice/Ice/Communicator.ice \ ../slice/Ice/ServantFactory.ice \ ../slice/IcePack/Admin.ice \ ../slice/Freeze/DB.ice \ + ../slice/Freeze/DBException.ice \ ../slice/Freeze/Evictor.ice include $(top_srcdir)/config/Make.rules diff --git a/cpp/include/Ice/LocalException.h b/cpp/include/Ice/LocalException.h index 41b6e892cb7..9eed6fe4720 100644 --- a/cpp/include/Ice/LocalException.h +++ b/cpp/include/Ice/LocalException.h @@ -40,6 +40,18 @@ private: ICE_API std::ostream& operator<<(std::ostream&, const LocalException&); +class ICE_API UnknownException : public LocalException +{ +public: + + UnknownException(const char*, int); + UnknownException(const UnknownException&); + UnknownException& operator=(const UnknownException&); + virtual std::string toString() const; + virtual LocalException* clone() const; + virtual void raise() const; +}; + class ICE_API UnknownUserException : public LocalException { public: diff --git a/cpp/include/Ice/Object.h b/cpp/include/Ice/Object.h index 54b0f70e373..1ee34b1e58a 100644 --- a/cpp/include/Ice/Object.h +++ b/cpp/include/Ice/Object.h @@ -24,10 +24,12 @@ class Stream; enum DispatchStatus { DispatchOK, - DispatchException, + DispatchUserException, DispatchLocationForward, DispatchObjectNotExist, - DispatchOperationNotExist + DispatchOperationNotExist, + DispatchLocalException, + DispatchUnknownException }; } diff --git a/cpp/slice/Freeze/DB.ice b/cpp/slice/Freeze/DB.ice index ce50792a6f4..b4af2bafd34 100644 --- a/cpp/slice/Freeze/DB.ice +++ b/cpp/slice/Freeze/DB.ice @@ -12,6 +12,7 @@ #define FREEZE_DB_ICE #include <Ice/CommunicatorF.ice> +#include <Freeze/DBException.ice> #include <Freeze/DBF.ice> #include <Freeze/EvictorF.ice> @@ -25,46 +26,6 @@ module Freeze /** * - * A Freeze database exception. - * - * @see DBEnvironment - * @see DBTransaction - * @see DB - * @see Evictor - * - **/ -local class DBException -{ - /** - * - * A message describing the reason for the exception. - * - **/ - string message; -}; - -/** - * - * A Freeze database exception, indicating that a database record - * could not be found. - * - **/ -local class DBNotFoundException extends DBException -{ -}; - -/** - * - * A Freeze database deadlock exception. Transactions can react to - * this exception by aborting and trying the transaction again. - * - **/ -local class DBDeadlockException extends DBException -{ -}; - -/** - * * A database environment. Multiple databases can be created from a * single database environment. The database environment also offers * operations to create transactions. diff --git a/cpp/slice/Freeze/DBException.ice b/cpp/slice/Freeze/DBException.ice new file mode 100644 index 00000000000..9dac5d4818d --- /dev/null +++ b/cpp/slice/Freeze/DBException.ice @@ -0,0 +1,59 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#ifndef FREEZE_DB_EXCEPTION_ICE +#define FREEZE_DB_EXCEPTION_ICE + +module Freeze +{ + +/** + * + * A Freeze database exception. + * + * @see DBEnvironment + * @see DBTransaction + * @see DB + * @see Evictor + * + **/ +class DBException +{ + /** + * + * A message describing the reason for the exception. + * + **/ + string message; +}; + +/** + * + * A Freeze database exception, indicating that a database record + * could not be found. + * + **/ +class DBNotFoundException extends DBException +{ +}; + +/** + * + * A Freeze database deadlock exception. Transactions can react to + * this exception by aborting and trying the transaction again. + * + **/ +class DBDeadlockException extends DBException +{ +}; + +}; + +#endif diff --git a/cpp/slice/Freeze/DBF.ice b/cpp/slice/Freeze/DBF.ice index 3487c3cc3d4..120feb4b602 100644 --- a/cpp/slice/Freeze/DBF.ice +++ b/cpp/slice/Freeze/DBF.ice @@ -14,8 +14,6 @@ module Freeze { -local class DBException; -local class DBDeadlockException; local interface DBEnvironment; local interface DBTransaction; local interface DB; diff --git a/cpp/slice/Freeze/Evictor.ice b/cpp/slice/Freeze/Evictor.ice index 1ee6aebe832..815d4e81add 100644 --- a/cpp/slice/Freeze/Evictor.ice +++ b/cpp/slice/Freeze/Evictor.ice @@ -12,6 +12,7 @@ #define FREEZE_EVICTOR_ICE #include <Ice/ObjectAdapter.ice> +#include <Freeze/DBException.ice> #include <Freeze/DBF.ice> module Freeze diff --git a/cpp/src/Freeze/.depend b/cpp/src/Freeze/.depend index b2187ca180c..53077d687af 100644 --- a/cpp/src/Freeze/.depend +++ b/cpp/src/Freeze/.depend @@ -1,4 +1,5 @@ -DB.o: DB.cpp ../../include/Freeze/DB.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/Ice/Stream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h -DBI.o: DBI.cpp ../../include/Ice/Stream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Buffer.h ../Freeze/DBI.h ../../include/IceUtil/IceUtil.h ../../include/IceUtil/Functional.h ../../include/IceUtil/Shared.h ../../include/Ice/Ice.h ../../include/Ice/Communicator.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/LocalObject.h ../../include/Ice/LoggerF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/PicklerF.h ../../include/Ice/PropertiesF.h ../../include/Ice/ServantFactoryF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/ServantFactory.h ../../include/Ice/Pickler.h ../../include/Ice/Initialize.h ../../include/Freeze/DB.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../Freeze/EvictorI.h ../../include/Freeze/Evictor.h ../../include/Freeze/Initialize.h -Evictor.o: Evictor.cpp ../../include/Freeze/Evictor.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/CommunicatorF.h ../../include/Freeze/DBF.h ../../include/Ice/Stream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h -EvictorI.o: EvictorI.cpp ../../include/Ice/Object.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/EmitterF.h ../../include/Ice/ReferenceF.h ../Freeze/EvictorI.h ../../include/Ice/Ice.h ../../include/Ice/Communicator.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/LocalObject.h ../../include/Ice/LoggerF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/PicklerF.h ../../include/Ice/PropertiesF.h ../../include/Ice/ServantFactoryF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/ServantFactory.h ../../include/Ice/Pickler.h ../../include/Ice/Initialize.h ../../include/Ice/InstanceF.h ../../include/Freeze/DB.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/Freeze/Evictor.h +DB.o: DB.cpp ../../include/Freeze/DB.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/Proxy.h ../../include/IceUtil/Shared.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/EmitterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/Ice/Stream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/LocalObject.h ../../include/Ice/LocalException.h ../../include/Ice/CommunicatorF.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h +DBException.o: DBException.cpp ../../include/Freeze/DBException.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/Proxy.h ../../include/IceUtil/Shared.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/EmitterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/Ice/Stream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/LocalObject.h ../../include/Ice/LocalException.h +Evictor.o: Evictor.cpp ../../include/Freeze/Evictor.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Config.h ../../include/IceUtil/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/Proxy.h ../../include/IceUtil/Shared.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/EmitterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/Ice/Stream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/LocalObject.h ../../include/Ice/LocalException.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/CommunicatorF.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h +DBI.o: DBI.cpp ../../include/Ice/Stream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/Buffer.h ../../include/Freeze/DBException.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/Proxy.h ../../include/IceUtil/Shared.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/EmitterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/Object.h ../../include/Ice/Outgoing.h ../../include/Ice/Incoming.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/LocalObject.h ../../include/Ice/LocalException.h ../Freeze/DBI.h ../../include/IceUtil/IceUtil.h ../../include/IceUtil/Functional.h ../../include/Ice/Ice.h ../../include/Ice/Communicator.h ../../include/Ice/LoggerF.h ../../include/Ice/PicklerF.h ../../include/Ice/PropertiesF.h ../../include/Ice/ServantFactoryF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/CommunicatorF.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/ServantFactory.h ../../include/Ice/Pickler.h ../../include/Ice/Initialize.h ../../include/Freeze/DB.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../Freeze/EvictorI.h ../../include/Freeze/Evictor.h ../../include/Freeze/Initialize.h +EvictorI.o: EvictorI.cpp ../../include/Ice/Object.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/Ice/ObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyF.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/EmitterF.h ../../include/Ice/ReferenceF.h ../Freeze/EvictorI.h ../../include/Ice/Ice.h ../../include/Ice/Communicator.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Native.h ../../include/Ice/LocalObject.h ../../include/Ice/LoggerF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/PicklerF.h ../../include/Ice/PropertiesF.h ../../include/Ice/ServantFactoryF.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/ServantFactory.h ../../include/Ice/Pickler.h ../../include/Ice/Initialize.h ../../include/Ice/InstanceF.h ../../include/Freeze/DB.h ../../include/Ice/Outgoing.h ../../include/Ice/Stream.h ../../include/Ice/Buffer.h ../../include/Ice/Incoming.h ../../include/Freeze/DBException.h ../../include/Freeze/DBF.h ../../include/Freeze/EvictorF.h ../../include/Freeze/Evictor.h diff --git a/cpp/src/Freeze/DBI.cpp b/cpp/src/Freeze/DBI.cpp index f20e62ac201..22615619d70 100644 --- a/cpp/src/Freeze/DBI.cpp +++ b/cpp/src/Freeze/DBI.cpp @@ -9,6 +9,7 @@ // ********************************************************************** #include <Ice/Stream.h> // Not included in Ice/Ice.h +#include <Freeze/DBException.h> #include <Freeze/DBI.h> #include <Freeze/EvictorI.h> #include <Freeze/Initialize.h> @@ -90,14 +91,13 @@ Freeze::DBEnvironmentI::DBEnvironmentI(const CommunicatorPtr& communicator, cons } checkBerkeleyDBReturn(_dbEnv->open(_dbEnv, _name.c_str(), - DB_CREATE | - DB_INIT_LOCK | - DB_INIT_LOG | - DB_INIT_MPOOL | - DB_INIT_TXN | - DB_RECOVER | - DB_THREAD, - FREEZE_DB_MODE), _errorPrefix, "DB_ENV->open"); + DB_CREATE | + DB_INIT_LOCK | + DB_INIT_LOG | + DB_INIT_MPOOL | + DB_INIT_TXN | + DB_RECOVER, + FREEZE_DB_MODE), _errorPrefix, "DB_ENV->open"); } Freeze::DBEnvironmentI::~DBEnvironmentI() @@ -324,8 +324,10 @@ Freeze::DBI::DBI(const CommunicatorPtr& communicator, const DBEnvironmentIPtr& d _logger->trace("DB", s.str()); } - checkBerkeleyDBReturn(_db->open(_db, name.c_str(), 0, DB_BTREE, DB_CREATE, FREEZE_DB_MODE), _errorPrefix, + checkBerkeleyDBReturn(_db->open(_db, _name.c_str(), 0, DB_BTREE, DB_CREATE, FREEZE_DB_MODE), _errorPrefix, "DB->open"); + + _dbEnvObj->add(_name, this); } Freeze::DBI::~DBI() @@ -413,10 +415,7 @@ Freeze::DBI::get(const Key& key) checkBerkeleyDBReturn(_db->get(_db, 0, &dbKey, &dbData, 0), _errorPrefix, "DB->get"); - Value value; - value.resize(dbData.size); - memcpy(value.begin(), dbData.data, dbData.size); - return value; + return Value(static_cast<Byte*>(dbData.data), static_cast<Byte*>(dbData.data) + dbData.size); } void @@ -521,8 +520,8 @@ Freeze::DBI::getServant(const string& identity) IceInternal::InstancePtr instance = IceInternal::getInstance(_communicator); IceInternal::Stream stream(instance); stream.b.resize(dbData.size); + copy(static_cast<Byte*>(dbData.data), static_cast<Byte*>(dbData.data) + dbData.size, stream.b.begin()); stream.i = stream.b.begin(); - memcpy(stream.b.begin(), dbData.data, dbData.size); ObjectPtr servant; stream.read(servant, "::Ice::Object"); diff --git a/cpp/src/Freeze/EvictorI.cpp b/cpp/src/Freeze/EvictorI.cpp index 74332675f6b..3104e8b3d2a 100644 --- a/cpp/src/Freeze/EvictorI.cpp +++ b/cpp/src/Freeze/EvictorI.cpp @@ -18,7 +18,7 @@ using namespace Freeze; Freeze::EvictorI::EvictorI(const DBPtr& db, const CommunicatorPtr& communicator) : _db(db), - _evictorSize(static_cast<map<string, EvictorElement>::size_type>(10)), + _evictorSize(10), _persistenceMode(SaveUponEviction), _logger(communicator->getLogger()), _trace(0) diff --git a/cpp/src/Freeze/Makefile b/cpp/src/Freeze/Makefile index 787a8aee7eb..609a2f65f9c 100644 --- a/cpp/src/Freeze/Makefile +++ b/cpp/src/Freeze/Makefile @@ -19,8 +19,9 @@ VERSIONED_NAME = $(top_srcdir)/lib/$(VERSIONED_BASE) TARGETS = $(NAME) $(VERSIONED_NAME) OBJS = DB.o \ - DBI.o \ + DBException.o \ Evictor.o \ + DBI.o \ EvictorI.o SRCS = $(OBJS:.o=.cpp) @@ -59,6 +60,14 @@ $(HDIR)/DBF.h: $(IDIR)/DBF.ice $(SLICE2CPP) clean:: rm -f $(HDIR)/DBF.h +$(HDIR)/DBException.h DBException.cpp: $(IDIR)/DBException.ice $(SLICE2CPP) + rm -f $(HDIR)/DBException.h DBException.cpp + $(SLICECMD) $(IDIR)/DBException.ice + mv DBException.h $(HDIR) + +clean:: + rm -f $(HDIR)/DBException.h DBException.cpp + $(HDIR)/Evictor.h Evictor.cpp: $(IDIR)/Evictor.ice $(SLICE2CPP) rm -f $(HDIR)/Evictor.h Evictor.cpp $(SLICECMD) $(IDIR)/Evictor.ice diff --git a/cpp/src/Freeze/freeze.dsp b/cpp/src/Freeze/freeze.dsp index f451d224ce5..0b476f8e1c7 100644 --- a/cpp/src/Freeze/freeze.dsp +++ b/cpp/src/Freeze/freeze.dsp @@ -108,6 +108,10 @@ SOURCE=.\DB.cpp # End Source File
# Begin Source File
+SOURCE=.\DBException.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\DBI.cpp
# End Source File
# Begin Source File
@@ -132,6 +136,10 @@ SOURCE=..\..\include\Freeze\DBF.h # End Source File
# Begin Source File
+SOURCE=..\..\include\Freeze\DBException.h
+# End Source File
+# Begin Source File
+
SOURCE=.\DBI.h
# End Source File
# Begin Source File
@@ -240,6 +248,51 @@ InputPath=..\..\slice\Freeze\DBF.ice # End Source File
# Begin Source File
+SOURCE=..\..\slice\Freeze\DBException.ice
+
+!IF "$(CFG)" == "Freeze - Win32 Release"
+
+USERDEP__DB_IC="..\..\bin\slice2cpp.exe"
+# Begin Custom Build
+InputPath=..\..\slice\Freeze\DBException.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\lib \
+ ..\..\bin\slice2cpp.exe --dll-export FREEZE_API --include-dir Freeze -I../../slice ../../slice/Freeze/DBException.ice \
+ move DBException.h ..\..\include\Freeze \
+
+
+"..\..\include\Freeze\DBException.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"DBException.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "Freeze - Win32 Debug"
+
+USERDEP__DB_IC="..\..\bin\slice2cpp.exe"
+# Begin Custom Build
+InputPath=..\..\slice\Freeze\DBException.ice
+
+BuildCmds= \
+ set PATH=%PATH%;..\..\lib \
+ ..\..\bin\slice2cpp.exe --dll-export FREEZE_API --include-dir Freeze -I../../slice ../../slice/Freeze/DBException.ice \
+ move DBException.h ..\..\include\Freeze \
+
+
+"..\..\include\Freeze\DBException.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"DBException.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
SOURCE=..\..\slice\Freeze\Evictor.ice
!IF "$(CFG)" == "Freeze - Win32 Release"
diff --git a/cpp/src/Ice/Collector.cpp b/cpp/src/Ice/Collector.cpp index faed3a338a1..97d09ec7d73 100644 --- a/cpp/src/Ice/Collector.cpp +++ b/cpp/src/Ice/Collector.cpp @@ -216,16 +216,6 @@ IceInternal::Collector::message(Stream& stream) { JTCSyncT<JTCRecursiveMutex> sync(*this); warning(ex); - setState(StateClosed); - } - catch(...) - { - JTCSyncT<JTCRecursiveMutex> sync(*this); - string s("server exception:\n"); - s += "unknown exception (no further information available)\n"; - s += _transceiver->toString(); - _logger->warning(s); - setState(StateClosed); } } while (batch && stream.i < stream.b.end()); diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp index 4d9b0c2cc8b..64209f0b867 100644 --- a/cpp/src/Ice/Incoming.cpp +++ b/cpp/src/Ice/Incoming.cpp @@ -37,8 +37,7 @@ IceInternal::Incoming::invoke(Stream& is) string operation; _is.read(operation); - int statusPos = _os.b.size(); - _os.write(Byte(0)); + Stream::Container::size_type statusPos = _os.b.size(); ObjectPtr servant = _adapter->identityToServant(identity); ServantLocatorPtr locator; @@ -57,36 +56,50 @@ IceInternal::Incoming::invoke(Stream& is) if(!servant) { - *(_os.b.begin() + statusPos) = static_cast<Byte>(DispatchObjectNotExist); + _os.write(static_cast<Byte>(DispatchObjectNotExist)); } else { + _os.write(static_cast<Byte>(DispatchOK)); DispatchStatus status = servant->__dispatch(*this, operation); - if (status != DispatchOK && status != DispatchException && status != DispatchOperationNotExist) - { - throw UnknownReplyStatusException(__FILE__, __LINE__); - } - *(_os.b.begin() + statusPos) = static_cast<Byte>(status); } + + if (locator && servant) + { + locator->finished(_adapter, identity, servant, operation, cookie); + } } catch(const LocationForward& p) { - *(_os.b.begin() + statusPos) = static_cast<Byte>(DispatchLocationForward); + if (locator && servant) + { + locator->finished(_adapter, identity, servant, operation, cookie); + } + _os.b.resize(statusPos); + _os.write(static_cast<Byte>(DispatchLocationForward)); _os.write(p._prx); + return; } - catch(...) + catch(const LocalException& ex) { if (locator && servant) { locator->finished(_adapter, identity, servant, operation, cookie); } + _os.b.resize(statusPos); + _os.write(static_cast<Byte>(DispatchLocalException)); throw; } - - if (locator && servant) + catch(...) { - locator->finished(_adapter, identity, servant, operation, cookie); + if (locator && servant) + { + locator->finished(_adapter, identity, servant, operation, cookie); + } + _os.b.resize(statusPos); + _os.write(static_cast<Byte>(DispatchUnknownException)); + throw UnknownException(__FILE__, __LINE__); } } diff --git a/cpp/src/Ice/LocalException.cpp b/cpp/src/Ice/LocalException.cpp index 976ede001e7..80d487d5c1a 100644 --- a/cpp/src/Ice/LocalException.cpp +++ b/cpp/src/Ice/LocalException.cpp @@ -77,6 +77,42 @@ Ice::operator<<(ostream& out, const LocalException& ex) return out << s; } +Ice::UnknownException::UnknownException(const char* file, int line) : + LocalException(file, line) +{ +} + +Ice::UnknownException::UnknownException(const UnknownException& ex) : + LocalException(ex) +{ +} + +UnknownException& +Ice::UnknownException::operator=(const UnknownException& ex) +{ + LocalException::operator=(ex); + return *this; +} + +string +Ice::UnknownException::toString() const +{ + string s = debugInfo() + "unknown exception"; + return s; +} + +LocalException* +Ice::UnknownException::clone() const +{ + return new UnknownException(*this); +} + +void +Ice::UnknownException::raise() const +{ + throw *this; +} + Ice::UnknownUserException::UnknownUserException(const char* file, int line) : LocalException(file, line) { diff --git a/cpp/src/Ice/Outgoing.cpp b/cpp/src/Ice/Outgoing.cpp index b2d7aa9e2b3..f4b3ea8b088 100644 --- a/cpp/src/Ice/Outgoing.cpp +++ b/cpp/src/Ice/Outgoing.cpp @@ -199,7 +199,7 @@ IceInternal::Outgoing::finished(Stream& is) break; } - case DispatchException: + case DispatchUserException: { _state = StateException; break; @@ -225,6 +225,20 @@ IceInternal::Outgoing::finished(Stream& is) break; } + case DispatchLocalException: + { + _state = StateLocalException; + _exception = auto_ptr<LocalException>(new LocalException(__FILE__, __LINE__)); + break; + } + + case DispatchUnknownException: + { + _state = StateLocalException; + _exception = auto_ptr<LocalException>(new UnknownException(__FILE__, __LINE__)); + break; + } + default: { _state = StateLocalException; diff --git a/cpp/src/Ice/TraceUtil.cpp b/cpp/src/Ice/TraceUtil.cpp index 22f35ff1b90..cc6aaaa0203 100644 --- a/cpp/src/Ice/TraceUtil.cpp +++ b/cpp/src/Ice/TraceUtil.cpp @@ -154,9 +154,9 @@ IceInternal::traceReply(const char* heading, const Stream& str, const ::Ice::Log s << "(ok)"; break; } - case DispatchException: + case DispatchUserException: { - s << "(exception)"; + s << "(user exception)"; break; } case DispatchLocationForward: @@ -174,6 +174,16 @@ IceInternal::traceReply(const char* heading, const Stream& str, const ::Ice::Log s << "(operation not exist)"; break; } + case DispatchLocalException: + { + s << "(local exception)"; + break; + } + case DispatchUnknownException: + { + s << "(unknown exception)"; + break; + } default: { s << "(unknown)"; diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index c590d22f688..618cfab0c71 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -1777,6 +1777,8 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p) C << retS << " __ret = "; } C << name << args << ';'; + writeMarshalCode(C, outParams, ret); + C << nl << "return ::IceInternal::DispatchOK;"; if (!throws.empty()) { C << eb; @@ -1798,12 +1800,10 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p) { writeMarshalUnmarshalCode(C, *r, "__ex", true); } - C << nl << "return ::IceInternal::DispatchException;"; + C << nl << "return ::IceInternal::DispatchUserException;"; C << eb; } } - writeMarshalCode(C, outParams, ret); - C << nl << "return ::IceInternal::DispatchOK;"; C << eb; } } @@ -1868,19 +1868,25 @@ Slice::Gen::IceVisitor::visitClassDefStart(const ClassDefPtr& p) string scoped = p->scoped(); C << sp; - C << nl << "void IceInternal::incRef(" << scoped << "* p) { p->__incRef(); }"; - C << nl << "void IceInternal::decRef(" << scoped << "* p) { p->__decRef(); }"; + C << nl << "void" << nl << "IceInternal::incRef(" << scoped << "* p)"; + C << sb; + C << nl << "p->__incRef();"; + C << eb; + C << nl << "void" << nl << "IceInternal::decRef(" << scoped << "* p)"; + C << sb; + C << nl << "p->__decRef();"; + C << eb; if (!p->isLocal()) { C << sp; C << nl << "void" << nl << "IceInternal::incRef(::IceProxy" << scoped << "* p)"; C << sb; - C << "p->__incRef();"; + C << nl << "p->__incRef();"; C << eb; C << nl << "void" << nl << "IceInternal::decRef(::IceProxy" << scoped << "* p)"; C << sb; - C << "p->__decRef();"; + C << nl << "p->__decRef();"; C << eb; C << sp; C << nl << "void" << nl << "IceInternal::checkedCast(::IceProxy::Ice::Object* b, ::IceProxy" << scoped diff --git a/cpp/src/slice2freeze/Main.cpp b/cpp/src/slice2freeze/Main.cpp index a419d90b56e..5e5d9d51a17 100644 --- a/cpp/src/slice2freeze/Main.cpp +++ b/cpp/src/slice2freeze/Main.cpp @@ -214,7 +214,7 @@ writeDict(const string& n, UnitPtr& unit, const Dict& dict, Output& H, Output& C C << nl << "IceInternal::Stream keyStream(instance);"; writeMarshalUnmarshalCode(C, keyType, "key", "keyStream", true); C << nl << "IceInternal::Stream valueStream(instance);"; - writeMarshalUnmarshalCode(C, keyType, "key", "valueStream", true); + writeMarshalUnmarshalCode(C, keyType, "value", "valueStream", true); C << nl << "_db->put(keyStream.b, valueStream.b);"; C << eb; C << sp << nl << typeToString(valueType) << nl << absolute << "::get(" << inputTypeToString(keyType) |