Commit graph

84 commits

Author SHA1 Message Date
Al Riddoch
a884fa4866 2006-05-06 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/newid.cpp, server/server.cpp:
	  Modify new ID checks so that code still runs when database is
	  unavailable, and events requiring new IDs fail cleanly.

	* server/Connection.cpp: Report a failure to create a player
	  account if no ID available.

	* rulesets/BaseMind.cpp: When processing appearance ops, handle
	  stamp more efficiently, report an error if ID is missing
	  from argument.

	* server/IdlePSQLConnector.cpp, server/IdlePSQLConnector.h:
	  Implement re-connecting to the Database if connection is lost.

	* rulesets/Character.cpp, rulesets/Entity.cpp, rulesets/Thing.cpp:
	  Ensure STAMP is present on appearance op args.

	* server/CommListener.cpp, server/CommListener.h,
	  server/CommPeerListener.cpp, server/CommPeerListener.h,
	  server/CommSlaveListener.cpp, server/CommSlaveListener.h,
	  server/CommUnixListener.cpp, server/CommUnixListener.h:
	  Add a return value to method for creating new client socket
	  objects, and use it to return failure if no ID is available
	  from the database for a new object.

	* rulesets/Py_Point3D.cpp, rulesets/Py_Vector3D.cpp,
	  rulesets/Python_API.cpp: Add "new" method for class wrappers, and
	  call the in place constructor from new rather than init. Re-write
	  internal function for creating new instances so it uses the "new"
	  method.

	* rulesets/Py_Statistics.cpp: Remove some obsolete code inadvertedly
	  copied from another file. Comment out some unused code to get rid
	  of a warning.

	* server/CommPSQLSocket.cpp: Clear the database connection from
	  destructor.

	* tests/python_class.cpp: A new test for experimenting with new
	  Python wrappers.
2006-05-06 21:36:57 +00:00
Al Riddoch
fac57eee73 2006-01-19 Al Riddoch <alriddoch@zepler.org>
* aiclient/ClientAccount.cpp, aiclient/ClientAccount.h,
	  aiclient/ClientConnection.cpp, aiclient/ClientConnection.h,
	  aiclient/client.cpp, aiclient/client.h, client/BaseClient.cpp,
	  client/BaseClient.h, client/CharacterClient.cpp,
	  client/CharacterClient.h, client/ClientConnection.cpp,
	  client/ClientConnection.h, client/CreatorClient.cpp,
	  client/CreatorClient.h, client/ObserverClient.cpp,
	  client/ObserverClient.h, client/Py_CreatorClient.cpp,
	  client/Py_CreatorClient.h, client/client.cpp,
	  client/define_world.cpp, client/define_world.h, common/Add.h,
	  common/Affect.h, common/AtlasFileLoader.cpp,
	  common/AtlasFileLoader.h, common/Attack.h, common/BaseEntity.cpp,
	  common/BaseEntity.h, common/BaseWorld.cpp, common/BaseWorld.h,
	  common/Burn.h, common/Chop.h, common/Connect.h, common/CustomOp.cpp,
	  common/CustomOp.h, common/CustomOp_impl.h, common/Cut.h,
	  common/Database.cpp, common/Database.h, common/Delve.h, common/Dig.h,
	  common/Eat.h, common/FormattedXMLWriter.cpp,
	  common/FormattedXMLWriter.h, common/Generic.h, common/Load.h,
	  common/Monitor.h, common/Mow.h, common/Nourish.h,
	  common/OOGThing.cpp, common/OOGThing.h, common/Property.cpp,
	  common/Property.h, common/Property_impl.h, common/Save.h,
	  common/Setup.h, common/Tick.h, common/Unseen.h, common/Update.h,
	  common/Use.h, common/Wield.h, common/accountbase.cpp,
	  common/accountbase.h, common/const.cpp, common/const.h,
	  common/custom.cpp, common/debug.h, common/globals.cpp,
	  common/globals.h, common/id.cpp, common/id.h, common/inheritance.cpp,
	  common/inheritance.h, common/inheritance_impl.h, common/log.cpp,
	  common/log.h, common/newid.cpp, common/nls.h, common/op_switch.h,
	  common/operations.cpp, common/operations.h, common/random.h,
	  common/refno.h, common/serialno.cpp, common/serialno.h,
	  common/system.cpp, common/system.h, common/terrain_utils.cpp,
	  common/terrain_utils.h, common/type_utils.h, common/types.h,
	  common/utility.cpp, common/utility.h, modules/DateTime.cpp,
	  modules/DateTime.h, modules/Location.cpp, modules/Location.h,
	  modules/WorldTime.cpp, modules/WorldTime.h, physics/BBox.cpp,
	  physics/BBox.h, physics/Collision.cpp, physics/Collision.h,
	  physics/Quaternion.cpp, physics/Quaternion.h, physics/Vector3D.cpp,
	  physics/Vector3D.h, physics/VectorPol.h, rulesets/Area.cpp,
	  rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
	  rulesets/ArithmeticScript.cpp, rulesets/ArithmeticScript.h,
	  rulesets/BaseMind.cpp, rulesets/BaseMind.h,
	  rulesets/CalendarProperty.cpp, rulesets/CalendarProperty.h,
	  rulesets/Character.cpp, rulesets/Character.h, rulesets/Combat.cpp,
	  rulesets/Combat.h, rulesets/Container.cpp, rulesets/Container.h,
	  rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
	  rulesets/Entity.h, rulesets/EntityProperties.cpp,
	  rulesets/Entity_getLocation.h, rulesets/Fell.cpp, rulesets/Fell.h,
	  rulesets/Food.cpp, rulesets/Food.h, rulesets/Line.cpp,
	  rulesets/Line.h, rulesets/LineProperty.cpp, rulesets/LineProperty.h,
	  rulesets/MemEntity.cpp, rulesets/MemEntity.h, rulesets/MemMap.cpp,
	  rulesets/MemMap.h, rulesets/MemMap_methods.h,
	  rulesets/MindFactory.cpp, rulesets/MindFactory.h, rulesets/Missile.h,
	  rulesets/Motion.cpp, rulesets/Motion.h, rulesets/Movement.cpp,
	  rulesets/Movement.h, rulesets/Pedestrian.cpp, rulesets/Pedestrian.h,
	  rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_BBox.cpp,
	  rulesets/Py_BBox.h, rulesets/Py_EntityWrapper.h,
	  rulesets/Py_Location.cpp, rulesets/Py_Location.h,
	  rulesets/Py_Map.cpp, rulesets/Py_Map.h, rulesets/Py_Mind.cpp,
	  rulesets/Py_Mind.h, rulesets/Py_Object.cpp, rulesets/Py_Object.h,
	  rulesets/Py_Operation.cpp, rulesets/Py_Operation.h,
	  rulesets/Py_Oplist.cpp, rulesets/Py_Oplist.h, rulesets/Py_Optime.cpp,
	  rulesets/Py_Optime.h, rulesets/Py_Point3D.cpp, rulesets/Py_Point3D.h,
	  rulesets/Py_Property.cpp, rulesets/Py_Property.h,
	  rulesets/Py_Quaternion.cpp, rulesets/Py_Quaternion.h,
	  rulesets/Py_RootEntity.cpp, rulesets/Py_RootEntity.h,
	  rulesets/Py_Statistics.cpp, rulesets/Py_Statistics.h,
	  rulesets/Py_Task.cpp, rulesets/Py_Task.h, rulesets/Py_Thing.cpp,
	  rulesets/Py_Thing.h, rulesets/Py_Vector3D.cpp,
	  rulesets/Py_Vector3D.h, rulesets/Py_World.cpp, rulesets/Py_World.h,
	  rulesets/Py_WorldTime.cpp, rulesets/Py_WorldTime.h,
	  rulesets/PythonArithmeticScript.cpp,
	  rulesets/PythonArithmeticScript.h, rulesets/PythonMindScript.cpp,
	  rulesets/PythonMindScript.h, rulesets/PythonScript.cpp,
	  rulesets/PythonScript.h, rulesets/PythonThingScript.cpp,
	  rulesets/PythonThingScript.h, rulesets/PythonWrapper.cpp,
	  rulesets/PythonWrapper.h, rulesets/Python_API.cpp,
	  rulesets/Python_API.h, rulesets/Python_Script_Utils.h,
	  rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
	  rulesets/Stackable.h, rulesets/Statistics.cpp, rulesets/Statistics.h,
	  rulesets/StatisticsProperty.cpp, rulesets/StatisticsProperty.h,
	  rulesets/Structure.cpp, rulesets/Structure.h, rulesets/Task.cpp,
	  rulesets/Task.h, rulesets/TaskScript.cpp, rulesets/TaskScript.h,
	  rulesets/TerrainProperty.cpp, rulesets/TerrainProperty.h,
	  rulesets/Thing.cpp, rulesets/Thing.h, rulesets/ThingFactory.cpp,
	  rulesets/ThingFactory.h, rulesets/World.cpp, rulesets/World.h,
	  rulesets/attributes.h, server/Account.cpp, server/Account.h,
	  server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.cpp,
	  server/ArithmeticFactory.h, server/CommClient.cpp,
	  server/CommClient.h, server/CommIdleSocket.cpp,
	  server/CommIdleSocket.h, server/CommListener.cpp,
	  server/CommListener.h, server/CommLocalClient.cpp,
	  server/CommLocalClient.h, server/CommMDNSPublisher.cpp,
	  server/CommMDNSPublisher.h, server/CommMaster.cpp,
	  server/CommMaster.h, server/CommMetaClient.cpp,
	  server/CommMetaClient.h, server/CommPSQLSocket.cpp,
	  server/CommPSQLSocket.h, server/CommPeer.cpp,
	  server/CommPeer.h, server/CommPeerListener.cpp,
	  server/CommPeerListener.h, server/CommRemoteClient.cpp,
	  server/CommRemoteClient.h, server/CommServer.cpp,
	  server/CommServer.h, server/CommSlaveClient.cpp,
	  server/CommSlaveClient.h, server/CommSlaveListener.cpp,
	  server/CommSlaveListener.h, server/CommSocket.cpp,
	  server/CommSocket.h, server/CommUnixListener.cpp,
	  server/CommUnixListener.h, server/Connection.cpp,
	  server/Connection.h, server/Connection_methods.h,
	  server/EntityFactory.cpp, server/EntityFactory.h,
	  server/ExternalMind.cpp, server/ExternalMind.h,
	  server/Idle.cpp, server/Idle.h, server/Lobby.cpp, server/Lobby.h,
	  server/Master.cpp, server/Master.h, server/Peer.cpp, server/Peer.h,
	  server/Persistance.cpp, server/Persistance.h,
	  server/PersistantThingFactory.cpp, server/PersistantThingFactory.h,
	  server/PersistantThingFactory_impl.h, server/Persistor.cpp,
	  server/Persistor.h, server/Persistor_impl.h,
	  server/Player.cpp, server/Player.h, server/Restoration.cpp,
	  server/Restoration.h, server/Restorer.cpp, server/Restorer.h,
	  server/Restorer_impl.h, server/ScriptFactory.cpp,
	  server/ScriptFactory.h, server/ServerRouting.cpp,
	  server/ServerRouting.h, server/ServerRouting_methods.h,
	  server/SlaveClientConnection.cpp, server/SlaveClientConnection.h,
	  server/TaskFactory.cpp, server/TaskFactory.h,
	  server/TrustedConnection.cpp, server/TrustedConnection.h,
	  server/WorldRouter.cpp, server/WorldRouter.h,
	  server/server.cpp, server/server.h, server/slave.cpp,
	  tests/Areatest.cpp, tests/BaseEntitytest.cpp,
	  tests/Charactertest.cpp, tests/Containertest.cpp,
	  tests/Creatortest.cpp, tests/EntityExerciser.h,
	  tests/EntityFactorytest.cpp, tests/Entitytest.cpp,
	  tests/Foodtest.cpp, tests/IGEntityExerciser.h,
	  tests/Linetest.cpp, tests/Locationtest.cpp, tests/OOGThingtest.cpp,
	  tests/Planttest.cpp, tests/Propertytest.cpp, tests/Stackabletest.cpp,
	  tests/Structuretest.cpp, tests/Tasktest.cpp, tests/TestWorld.h,
	  tests/Thingtest.cpp, tests/WorldTimetest.cpp, tests/Worldtest.cpp,
	  tests/allOperations.h, tests/collisiontest.cpp, tests/consttest.cpp,
	  tests/distancetest.cpp, tests/emergencetest.cpp,
	  tests/inheritancetest.cpp, tests/logtest.cpp, tests/randomtest.cpp,
	  tests/systemtest.cpp, tests/transformtest.cpp,
	  tests/type_utilstest.cpp, tests/utilitytest.cpp,
	  tools/AdminClient.cpp, tools/AdminClient.h, tools/cyaddrules.cpp,
	  tools/cycmd.cpp, tools/cyconfig.cpp, tools/cyconvertrules.cpp,
	  tools/cyctrl.cpp, tools/cydbload.cpp, tools/cydumprules.cpp,
	  tools/cyisoload.cpp, tools/cyloadrules.cpp, tools/cypasswd.cpp,
	  tools/cywatchdog.cpp: Replace the copyright and license statements
	  with new versions that include disclaimer of warranty, and
	  permit distribution under later versions of the GPL.
2006-01-19 02:17:06 +00:00
Al Riddoch
9ffe7efb0e 2006-01-04 Al Riddoch <alriddoch@zepler.org>
* configure.ac: Require latest varconf for its new features.

	* common/globals.cpp, tools/cyconfig.cpp: Use new varconf scope for
	  settings to more suitably handle user overidden config settings.

	* aiclient/ClientConnection.cpp, aiclient/client.cpp,
	  client/client.cpp, common/Database.cpp, server/server.cpp,
	  server/slave.cpp, tools/AdminClient.h, tools/cyaddrules.cpp,
	  tools/cycmd.cpp: Use new varconf/config.h header.
2006-01-04 15:06:46 +00:00
Al Riddoch
287a9bc660 2005-11-23 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, common/Database.cpp, rulesets/MemMap.cpp,
	  server/Connection.cpp, server/EntityFactory.cpp, server/Peer.cpp,
	  server/Persistance.cpp, server/Restoration.cpp,
	  server/ServerRouting.h: Update integer ID related checks now that
	  integerId() function has changed.
2005-11-23 11:55:08 +00:00
Al Riddoch
d24a86968c 2005-11-12 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h, common/id.h, common/id.cpp:
	  Make newId() functions return the integer value.

	* common/newid.cpp: Break newId out into its own file, and make
	  it handle whether or not the database should issue IDs.

	* server/Connection.cpp, server/Persistance.cpp,
	  server/WorldRouter.cpp, server/server.cpp: Simply generating IDs
	  by just using the newId() function, and use its return value.
2005-11-12 01:40:37 +00:00
Al Riddoch
852ff36c65 2005-09-13 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Report error when database connection fails.
2005-09-13 01:01:58 +00:00
Al Riddoch
19d808718a 2005-09-12 Al Riddoch <alriddoch@zepler.org>
* configure.ac: Increment version to development 0.5.x series.

	* aiclient/ClientAccount.cpp, client/BaseClient.cpp,
	  client/ClientConnection.cpp, common/BaseEntity.cpp,
	  common/Database.cpp, common/custom.cpp, common/inheritance.cpp,
	  common/operations.h, rulesets/BaseMind.cpp, rulesets/Creator.cpp,
	  rulesets/Food.cpp, rulesets/MemMap.cpp, rulesets/Pedestrian.cpp,
	  rulesets/Py_Operation.cpp, rulesets/Py_RootEntity.cpp,
	  rulesets/Python_API.cpp, rulesets/Stackable.cpp, rulesets/Thing.cpp,
	  rulesets/World.cpp, server/CommClient.cpp, server/Connection.cpp,
	  server/WorldRouter.cpp, tests/inheritancetest.cpp,
	  tools/AdminClient.h, tools/cyaddrules.cpp,
	  tools/cycmd.cpp, tools/cydumprules.cpp,
	  tools/cyloadrules.cpp, tools/cypasswd.cpp:
	  Remove unnecessary using directives.

	* common/utility.cpp, common/utility.h,
	  rulesets/BaseMind.cpp, rulesets/Py_Operation.cpp,
	  server/CommClient.cpp, tools/AdminClient.h, tools/cycmd.cpp:
	  Remove obsolete utility function from the build.

	* common/operations.h: Remove unused obsolete header from the
	  build.
2005-09-12 16:21:18 +00:00
Al Riddoch
42e1c99565 2005-08-30 Al Riddoch <alriddoch@zepler.org>
* common/AtlasFileLoader.cpp, common/Database.cpp,
	  common/FormattedXMLWriter.cpp, common/Property.cpp,
	  common/accountbase.cpp, rulesets/Character.cpp,
	  rulesets/Entity_getLocation.h, rulesets/MemMap.cpp,
	  rulesets/Pedestrian.cpp, rulesets/Plant.cpp,
	  rulesets/Py_Object.cpp, rulesets/Thing.cpp,
	  server/Admin.cpp, server/Connection.cpp, server/EntityFactory.cpp,
	  server/WorldRouter.cpp, tools/AdminClient.cpp, tools/cycmd.cpp,
	  tools/cyconvertrules.cpp: After an Element has been checked
	  with isFoo(), it is more efficient to get its value using Foo()
	  rather than asFoo() which repeats the check.
2005-08-30 20:43:19 +00:00
Al Riddoch
fdd316b628 2005-08-27 Al Riddoch <alriddoch@zepler.org>
* Port whole code base to Atlas-C++ 0.6 series. Main server binary
	  now links.
2005-08-27 14:52:12 +00:00
Al Riddoch
a155a753f8 2005-04-03 Al Riddoch <alriddoch@zepler.org>
* rulesets/Entity.h: Add a pointer to a Motion object to entities.

	* rulesets/Thing.cpp: Add notes about Motion implementation.
	  Clean up some variable names.

	* common/Database.cpp: Fix some lingering missuse of the varconf API.
2005-04-03 16:36:13 +00:00
Al Riddoch
8e12cf8de0 2004-01-13 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Improve error reporting for query errors.

	* common/const.cpp, common/const.h: Add full details and comments
	  for enable_database option.

	* common/id.h, common/id.cpp: New ID generator for use when we
	  are not using the Database.

	* common/AtlasFileLoader.cpp, common/AtlasFileLoader.h: Generic
	  class for loading Atlas data from a file.

	* server/Connection.cpp, server/EntityFactory.h,
	  server/EntityFactory.cpp, server/Persistor.cpp,
	  server/WorldRouter.cpp, server/server.cpp:
	  Implement the enable_database option by wrapping all use of database
	  in if statements. Rules are loaded from files instead.
2005-01-13 00:38:41 +00:00
Al Riddoch
e4aa444f3c 2004-11-29 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, common/BaseWorld.cpp,
	  common/BaseWorld.h, common/Burn.h, common/Chop.h, common/Cut.h,
	  common/Database.cpp, common/Database.h, common/Eat.h,
	  common/Generic.h, common/Load.h, common/Nourish.h,
	  common/OOGThing.cpp, common/OOGThing.h, common/Save.h,
	  common/Setup.h, common/Tick.h, common/accountbase.cpp,
	  common/accountbase.h, common/const.cpp, common/const.h,
	  common/custom.cpp, common/debug.h, common/globals.cpp,
	  common/globals.h, common/inheritance.cpp, common/inheritance.h,
	  common/log.cpp, common/log.h, common/op_switch.h, common/random.h,
	  common/serialno.h, common/system.cpp, common/system.h,
	  common/type_utils.h, common/types.h, common/utility.cpp,
	  common/utility.h: Update copyright dates in files as appropriate.
2004-11-29 21:42:00 +00:00
Al Riddoch
4d1e5255f0 2004-11-16 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/stringstream.h, rulesets/MemMap.cpp,
	  rulesets/World.cpp, server/CommClient.cpp, server/Persistor_impl.h,
	  server/Restorer_impl.h, server/WorldRouter.cpp, server/server.cpp,
	  tools/cyisoload.cpp: Switch code to including <sstream> directly
	  and remove obsolete wrapper header.
2004-11-16 12:27:27 +00:00
Al Riddoch
c4a92de9f3 2004-11-06 Al Riddoch <alriddoch@zepler.org>
* aiclient/ClientConnection.cpp, client/BaseClient.cpp,
	  client/CharacterClient.cpp, client/ClientConnection.cpp,
	  common/Database.cpp, common/FormattedXMLWriter.cpp,
	  common/inheritance.cpp, common/refno.h, common/terrain_utils.cpp,
	  common/type_utils.h, common/utility.cpp, modules/WorldTime.cpp,
	  modules/WorldTime.h, physics/Collision.cpp, rulesets/Area.cpp,
	  rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Entity.cpp,
	  rulesets/Line.cpp, rulesets/MemMap.cpp, rulesets/MemMap_methods.h,
	  rulesets/Movement.cpp, rulesets/Plant.cpp, rulesets/Py_Map.cpp,
	  rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
	  rulesets/Py_Oplist.cpp, rulesets/PythonMindScript.cpp,
	  rulesets/PythonThingScript.cpp, rulesets/Python_API.cpp,
	  rulesets/Stackable.cpp, rulesets/TerrainProperty.cpp,
	  rulesets/Thing.cpp, rulesets/World.cpp, server/Account.cpp,
	  server/CommClient.cpp, server/CommServer.cpp, server/Connection.cpp,
	  server/EntityFactory.cpp, server/Lobby.cpp, server/Persistance.cpp,
	  server/Player.cpp, server/Restoration.cpp, server/ServerRouting.cpp,
	  server/WorldRouter.cpp, tests/EntityExerciser.h,
	  tests/IGEntityExerciser.h, tests/inheritancetest.cpp,
	  tools/cycmd.cpp, tools/cyconvertrules.cpp, tools/cydbload.cpp,
	  tools/cyloadrules.cpp:
	  Tweak for loops to avoid creating a temporary iterator each
	  iteration.

	* tests/type_utilstest.cpp: New test for function which does
	  list conversions.
2004-11-06 20:36:03 +00:00
Al Riddoch
8873382624 2004-10-04 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Ensure that database notices and errors
	  get reported cleanly by the log system.
2004-10-04 13:10:01 +00:00
Al Riddoch
3dc25b698f 2004-10-03 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h, common/accountbase.cpp,
	  common/accountbase.h, server/Persistance.cpp, server/Persistance.h,
	  server/server.cpp, tools/cyloadrules.cpp, tools/cypasswd.cpp:
	  Use int for returning error status.
2004-10-03 01:50:49 +00:00
Al Riddoch
0b4f56e441 2004-10-02 Al Riddoch <alriddoch@zepler.org>
* rulesets/Python_API.cpp: Add new python wrapper for
	  relativePosition().

	* common/Database.cpp: Don't need trailing ; on database queries.
2004-10-02 01:12:02 +00:00
Al Riddoch
1e4a634c2a 2004-09-27 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/terrain_utils.cpp: Disable debugging
	  output.

	* server/Persistor.cpp: Don't update the main entity table if we
	  have no attributes modified other than terrain.
2004-09-28 00:47:18 +00:00
Al Riddoch
43d1761c1f 2004-09-25 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Add multicolumn unique index to array tables
	  to ensure contents is sane.
2004-09-27 10:33:12 +00:00
Al Riddoch
a511b7a237 2004-09-25 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Supress debug output.

	* common/terrain_utils.cpp: Free up database results after processing
	  and supress debug output.
2004-09-25 00:06:39 +00:00
Al Riddoch
1a2045901f 2004-09-17 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Implement function for modifying array rows.

	* common/const.cpp: Enable persistence for testing.

	* common/terrain_utils.cpp: Implement function for updating terrain
	  in database after a change.

	* rulesets/World.cpp, rulesets/attributes.h: Add an update flag for
	  terrain, and use it to indicate to the Persistor.

	* rulesets/World.h: Add accessors for variables which track modified
	  terrain, and a function to clear them.

	* server/Persistor.cpp: Implement call to function to update terrain
	  in database.

	* server/Restoration.cpp: Ensure that if world entity is already
	  in database, it gets hooked up appropriatly.
2004-09-17 17:19:55 +00:00
Al Riddoch
392a44ea9e 2004-09-14 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h: Fix queries on ID relation
	  tables. Add methods to result functions for decoding the contents
	  of fields more directly. Implement selecting from array tables.

	* common/terrain_utils.cpp, common/terrain_utils.h: New functions
	  for handling terrain in array database tables.

	* rulesets/World.cpp, rulesets/World.h: Add functionality to track
	  changes to the terrain for persistence purposes.

	* server/EntityFactory.cpp, server/EntityFactory.h, server/server.cpp:
	  Modify the way world entity persistence is bootstrapped to be
	  more consistent.

	* server/Persistor.cpp: Provide specialisations to handle world so
	  that terrain is persisted. Implement storing terrain at entity
	  creation.

	* server/Restoration.cpp, server/Restoration.h: Remove obsolete
	  restoration code. Return a status more accuratly representing
	  when restoration fails because of error, or if there is nothing
	  to restore.

	* server/Restorer.cpp, server/Restorer.h, server/Restorer_impl.h:
	  Convert to using methods for restoring data in the Database class.
	  Implement restoring terrain from the database.
2004-09-14 16:39:30 +00:00
Al Riddoch
c607ad0186 2004-09-07 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Implement inserting into array tables.
	  Modify tables so that key columns are NOT NULL.

	* server/Persistor.cpp: Test creating array rows.
2004-09-07 17:22:35 +00:00
Al Riddoch
be8ea28050 2004-09-07 Al Riddoch <alriddoch@zepler.org>
* common/Database.h, common/Database.cpp: Implement creating tables
	  for storing array data.

	* server/Persistor.cpp: Register a 2D array table for storing terrain
	  height point data.
2004-09-07 10:09:02 +00:00
Al Riddoch
f5231b1ec5 2004-09-06 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Add stubs for new methods.
2004-09-06 22:18:32 +00:00
Al Riddoch
96f13800c8 2004-08-07 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, common/BaseWorld.h,
	  common/Database.cpp, common/Database.h, common/FormattedXMLWriter.cpp,
	  common/FormattedXMLWriter.h, common/accountbase.cpp,
	  common/accountbase.h, common/custom.cpp, common/inheritance.cpp,
	  common/inheritance.h, common/operations.h, common/type_utils.h,
	  common/utility.cpp, common/utility.h, modules/Location.cpp,
	  modules/Location.h, rulesets/Area.cpp, rulesets/Area.h,
	  rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Character.h,
	  rulesets/Creator.cpp, rulesets/Entity.cpp, rulesets/Entity.h,
	  rulesets/Entity_getLocation.h, rulesets/Food.cpp, rulesets/Line.cpp,
	  rulesets/Line.h, rulesets/MemMap.cpp, rulesets/MemMap.h,
	  rulesets/Pedestrian.cpp, rulesets/Plant.cpp, rulesets/Plant.h,
	  rulesets/Py_Mind.cpp, rulesets/Py_Object.cpp, rulesets/Py_Object.h,
	  rulesets/Py_Operation.cpp, rulesets/Py_Thing.cpp,
	  rulesets/Python_API.cpp, rulesets/Stackable.cpp, rulesets/Stackable.h,
	  rulesets/Thing.cpp, rulesets/World.cpp, rulesets/World.h,
	  server/Account.cpp, server/Account.h, server/Admin.cpp,
	  server/Admin.h, server/CommClient.cpp, server/CommClient.h,
	  server/CommListener.cpp, server/CommListener.h,
	  server/CommLocalClient.cpp, server/CommLocalClient.h,
	  server/CommMetaClient.h, server/CommPSQLSocket.h,
	  server/CommRemoteClient.cpp, server/CommRemoteClient.h,
	  server/CommServer.cpp, server/CommServer.h, server/CommSocket.cpp,
	  server/CommSocket.h, server/CommUnixListener.cpp,
	  server/CommUnixListener.h, server/Connection.cpp,
	  server/Connection.h, server/EntityFactory.cpp,
	  server/EntityFactory.h, server/Lobby.cpp, server/Lobby.h,
	  server/Persistance.cpp, server/Persistance.h,
	  server/PersistantThingFactory.h, server/Persistor.cpp,
	  server/Player.cpp, server/Player.h, server/Restorer.h,
	  server/Restorer_impl.h, server/ServerRouting.cpp,
	  server/ServerRouting.h, server/TrustedConnection.cpp,
	  server/TrustedConnection.h, server/WorldRouter.cpp,
	  server/WorldRouter.h: Convert code to using Atlas Message
	  typedefs as found in Atlas-C++ 0.6 to aid conversion later.
2004-08-16 14:26:47 +00:00
Al Riddoch
6ea4c6090a 2004-07-22 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h: Add function to check
	  whether an Atlas table has a given key.

	* tools/cyloadrules.cpp: Use hasKey() function to make sure we
	  don't get errors when inserting rules.
2004-07-22 11:25:24 +00:00
Al Riddoch
71a1c70fa1 2004-07-20 Al Riddoch <alriddoch@zepler.org>
* client/CreatorClient.cpp, rulesets/BaseMind.cpp,
	  rulesets/MemEntity.cpp, rulesets/MemEntity.h,
	  rulesets/MemMap.cpp, rulesets/MemMap.h, rulesets/Py_Map.cpp:
	  Set time on memory entities when we update them.

	* common/BaseWorld.h: Make object accessor const.

	* common/Database.cpp, common/Database.h, common/accountbase.cpp,
	  server/Connection.cpp, server/Persistance.cpp,
	  server/WorldRouter.cpp: Rename function to get new ID from
	  database to more correctly reflect its role.

	* rulesets/PythonMindScript.cpp: Use get rather than getAdd
	  to sort out to and from of ops send to mind scripts.
2004-07-20 20:27:56 +00:00
Al Riddoch
245308cd24 2004-07-16 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Try out creating database tables without an
	  OID column.
2004-07-16 16:15:11 +00:00
Al Riddoch
12c86f9e3b 2004-07-14 Al Riddoch <alriddoch@zepler.org>
* common/Database.h, common/Database.cpp: Modify relation code
	  to allow partial support for foreign key constrains to maintain
	  referential integrity. Full support will work when (if) primary
	  keys are inherited.

	* server/Persistance.h, server/Persistance.cpp: Use updated relation
	  code for the accounts to characters relation.
2004-07-14 18:31:07 +00:00
Al Riddoch
91c9437c81 2004-07-12 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h: Add capability to specify
	  extra columns in generic Atlas database tables. Query the results
	  columns more robustly. Add a ruleset name column to the rules
	  table.

	* server/EntityFactory.cpp: Re-write rule loader to handle new
	  format rules. Tighten up strictness of rule data. It is no
	  longer possible to specify defaults for location in the rule.

	* tools/cyconvertrules.cpp: Ensure that the playable flag is
	  copied across when converting rules.

	* tools/cyloadrules.cpp: Adapt to load the new format rules,
	  including handling the ruleset name column.
2004-07-12 10:58:20 +00:00
Al Riddoch
74244d514f 2004-06-15 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/globals.cpp, rulesets/Area.cpp,
	  rulesets/Python_API.cpp, server/Connection.cpp,
	  server/Persistance.cpp: Ensure that all output goes either via
	  the log system, or only in debug macros.
2004-06-15 18:06:59 +00:00
Al Riddoch
c3f979b909 2004-06-03 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Handle empty strings in config file
	  so they are less likely to cause problems.
2004-06-03 17:34:58 +00:00
Al Riddoch
87809757c0 2004-03-08 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Fix bootstrap bug by ensuring that all pending
	  queries are cleared before launching a new query directly.
2004-03-08 14:36:44 +00:00
Al Riddoch
ba69f6ec4d 2003-11-22 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Additional error reporting for bad update
	  queries.

	* rulesets/Plant.h: Add accessor for number of fruits.

	* rulesets/Python_API.cpp: Remove experimental Python type code.

	* server/Persistor_impl.h: Fix persisting plant fruits, and
	  character attributes.
2003-11-22 15:30:30 +00:00
Al Riddoch
6c278ce33c 2003-10-30 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Add <cassert> for gcc 3.3
2003-10-30 00:03:54 +00:00
Al Riddoch
9c04705d93 2003-10-28 Al Riddoch <alriddoch@zepler.org>
* common/Database.h: Add a registry for all tables.

	* common/Database.cpp: Add names of all database tables to the
	  registry. Clean up, fix and fully implement running maintainance
	  commands on all tables on request.

	* server/CommPSQLSocket.h, server/CommPSQLSocket.cpp: Implement
	  timing variables for handling regular running of database
	  maintainance commands. Add code to schedule the commands to
	  idle method, alternating between VACUUM FULL and VACUUM ANALYZE.
2003-10-28 00:18:18 +00:00
Al Riddoch
a42087b520 2003-10-27 Al Riddoch <alriddoch@zepler.org>
* common/Database.h, common/Database.cpp: Add function which
	  schedules queries required for routine database maintainance.
2003-10-27 18:01:03 +00:00
Al Riddoch
ba566381af 2003-10-27 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp: Add database socket to the idle set, so it
	  gets called for regular database maintainance.

	* server/CommPSQLSocket.cpp, common/Database.cpp: Clean up and
	  disable the debugging output.
2003-10-27 12:04:53 +00:00
Al Riddoch
94a62bc477 2003-10-27 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp: Add communications object to handle getting
	  the response to database queries without blocking.

	* server/Persistance.h: Make database connection exposed so
	  that CommPSQLSocket can access it.

	* server/CommPSQLSocket.cpp: Add debugging output, and implement
	  dispatching new queries once we have response to previous.

	* common/Database.h, common/Database.cpp: Switch code to submit
	  all command queries via the async que, so we don't block
	  waiting for them to complete. Currently very noisy.
2003-10-27 01:59:53 +00:00
Al Riddoch
a6fc58508b 2003-10-25 Al Riddoch <alriddoch@zepler.org>
* server/CommPSQLSocket.cpp: Implement processing the response to
	  async queries.

	* common/Database.h, common/Database.cpp: Add new data and interface
	  for managing a queue of queries so they can be processed
	  asyncronously.
2003-10-24 23:50:12 +00:00
Al Riddoch
077212e598 2003-08-23 Al Riddoch <alriddoch@zepler.org>
* common/accountbase.h, common/accountbase.cpp: Add init
	  method required to make the database connection.
	  Clear up bugs in putAccount, and get putAccount to return
	  true/false correctly.

	* common/Database.h, common/Database.cpp: Add extra arg to
	  updateSimpleRow so it can use any column as the key.
2003-08-25 15:20:01 +00:00
Al Riddoch
a832c2ce1b 2003-08-23 Al Riddoch <alriddoch@zepler.org>
* tools/cypasswd.cpp: Remove an obsolete comment.

	* common/Database.h, common/Database.cpp: Add the method required
	  to update a row of a simle database table.

	* common/accountbase.h, common/accountbase.cpp: Re-implement
	  accountbase to use the new style accounts table.
2003-08-24 23:56:15 +00:00
Al Riddoch
98c7fc5f62 2003-08-13 Al Riddoch <alriddoch@zepler.org>
* common/const.cpp, common/const.h: Add a const for the default
	  admin password hash, with a view to removing the plain text
	  default admin password.

	* server/Persistance.cpp: Ensure that the database contains an
	  admin account on startup.

	* common/Database.cpp: Move the call to register the ID generating
	  sequence out of the code for creating IG entity tables, as it is
	  also required by OOG entities, in particular the admin account
	  bootstrap.

	* client/ObserverClient.cpp, client/ObserverClient.h,
	  client/client.cpp: Modify client so that it no longer attempts to
	  get account details from the database, or from a hard coded default.
	  It will now attempt a trusted login, or rely on password provided
	  by config option.
2003-08-12 23:45:40 +00:00
Al Riddoch
0fbfc771ad 2003-08-07 Al Riddoch <alriddoch@zepler.org>
* server/Lobby.cpp: Add some debugging messages.

	* server/CommServer.cpp: Tweak select loop so that closed connections
	  are cleaned up as soon as they are detected.

	* rulesets/World.cpp: Make demo terrain a bit more mountainous.

	* Convert entire codebase over to using Atlas-C++ 0.4.90, as
	  start of transition to 0.6 API.
2003-08-07 23:03:26 +00:00
Al Riddoch
661e208f6d 2003-07-21 Al Riddoch <alriddoch@zepler.org>
* common/Database.h, server/Account.cpp, server/Account.h,
	  server/Admin.h, server/Connection.cpp, server/Player.h,
	  server/WorldRouter.cpp: Change the form of the getEntityId()
	  method in the database code and re-work the code that uses it.

	* common/Database.cpp, common/Database.h: Use PQClear() to free
	  up database result objects, and provide a method to
	  free the contents of a DatabaseResult instance.
2003-07-21 09:37:58 +00:00
Al Riddoch
4c32169c52 2003-07-19 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp: Add support for boolean columns.

	* server/Persistor.cpp, server/Persistor_impl.h, server/Restorer.h,
	  server/Restorer_impl.h: Use a bool column to store whether or
	  not an entity has a bounding box, and use it apropriatly.
2003-07-19 18:29:57 +00:00
Al Riddoch
88bb8c6a42 2003-05-04 Al Riddoch <alriddoch@zepler.org>
* Clean up member variable names.
2003-05-04 18:31:38 +00:00
Al Riddoch
ba2c5485da 2003-01-12 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h: Add functions for removing
	  relation rows. Modify entity select method to handle an empty loc
	  correctly.

	* rulesets/Thing.cpp: Correct indenting.

	* rulesets/World.cpp: Trigger update in SetOperation() correctly.

	* server/Account.cpp, server/Persistance.cpp, server/Persistance.h:
	  Inform Persistance modules when the account loses a character, so
	  this change is reflected in the database.

	* server/Persistor.cpp: Move comments into the correct place.

	* server/Restoration.cpp, server/Restorer.cpp, server/Restorer.h,
	  server/Restorer_impl.h: Persist and restore the world entity
	  attributes. Remove redundant argument from Restorer::populate().
2003-01-12 15:06:09 +00:00
Al Riddoch
980f22cca5 2003-01-12 Al Riddoch <alriddoch@zepler.org>
* server/Restorer.h, server/Restorer_impl.h: Add method to allow
	  decoding of a complete atlas map from a database record.

	* common/Database.cpp: Ensure failure is only returned if string
	  is not empty.
2003-01-12 03:21:54 +00:00