Commit graph

52 commits

Author SHA1 Message Date
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
d1b328c61b 2005-10-16 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.h, server/CommClient.cpp: Check stream has not
	  failed before sending ops, to ensure that failed sockets are
	  cleared promptly. Check fail() in addition to eof() to ensure
	  that failed connections are detected when reading.
2005-10-16 20:35:09 +00:00
Al Riddoch
1035be0019 2005-10-04 Al Riddoch <alriddoch@zepler.org>
* server/Idle.h, server/Idle.cpp: Rename reference to CommServer
	  so there is no ambiguity in classes which inherit from Idle
	  and CommSocket.

	* server/CommServer.h, server/CommServer.cpp: Store the current
	  time, and a flag indicating if the server is currently handling
	  client traffic. Modify idle handlers so they are only
	  called if the server is not busy with internal traffic, or traffic
	  from clients. Check for errors returned by epoll().

	* server/CommUnixListener.cpp, server/CommListener.cpp,
	  server/CommClient.h, server/CommClient.cpp: Make CommClient an
	  idler, and use it to track clients which connect but don't
	  negotiate, disconnecting them after a timeout.
2005-10-04 23:01:32 +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
92dfc4ca95 2005-04-06 Al Riddoch <alriddoch@zepler.org>
* rulesets/Thing.cpp: Remove obsolete commented out code.

	* server/Account.cpp, server/Connection.cpp:
	  Add a note about serialno/refno handling when code sends ops
	  directly to the client.

	* server/CommClient.cpp, server/CommClient.h: Clean up some debug
	  code, and method names.

	* server/Lobby.cpp: Fix a case where a private message would fail
	  silently if account had logged on recenlty but was no longer.
2005-04-06 00:41:28 +00:00
Al Riddoch
96b2aa411b 2004-12-16 Al Riddoch <alriddoch@zepler.org>
* common/custom.cpp: Include cleanup.

	* server/CommClient.h, server/CommListener.h, server/CommLocalClient.h,
	  server/CommMetaClient.h, server/CommPSQLSocket.h,
	  server/CommRemoteClient.h, server/CommSlaveClient.h,
	  server/CommSocket.h, server/CommUnixListener.h:
	  Update copyright dates and class descriptions.
2004-12-16 22:56:28 +00:00
Al Riddoch
33921e4216 2004-12-15 Al Riddoch <alriddoch@zepler.org>
* server/Admin.cpp: Make sure setup is called on peer connection.

	* server/CommClient.h, server/CommClient.cpp: Adapt code so it
	  can be used for both establishing and accepting connections.

	* server/Connection.cpp: Re-order initialisations in constructor
	  to eliminate warnings.
2004-12-15 01:42:14 +00:00
Al Riddoch
a37be9c579 2004-12-15 Al Riddoch <alriddoch@zepler.org>
* server/CommListener.cpp, server/CommListener.h: Add a virtual
	  create method, so it can be overriden to make different kinds
	  of listener.

	* server/Peer.cpp, server/Peer.h: New class representing connections
	  to peer servers.

	* server/CommPeer.cpp, server/CommPeer.h: New socket class handling
	  sockets used to connect to peer servers.

	* server/CommPeerListener.cpp, server/CommPeerListener.h: New
	  listener using new virtual interface in CommListener to accept
	  peer connections.

	* server/CommClient.cpp, server/CommClient.h: Add a new constructor
	  for creating Atlas socket objects which are not yet open. Makes
	  this class suitable for establishing as well as accepting
	  connections. Take out call to Connection::destroy.

	* server/CommRemoteClient.h: Fix error in header guards.

	* server/Connection.cpp, server/Connection.h: Remove
	  obsolete destroy() method. Make CommClient member public.

	* server/server.cpp: Add new listener for peer connections.

	* common/types.h: Add enumeration for new connect operation.

	* server/Admin.cpp, server/Admin.h: Add new handler for connect
	  operations, used by admin client to build peer connections.

	* tools/cycmd.cpp: Add new command "connect" for sending
	  connect ops to server.
2004-12-15 00:55:54 +00:00
Al Riddoch
0e721ecc96 2004-11-24 Al Riddoch <alriddoch@zepler.org>
* common/utility.cpp: Add a FIXME note about more correctly
	  converting a message to an op.

	* server/CommClient.h, server/CommClient.cpp: Call new shutdown()
	  method in skstream instead of close when disconnecting or
	  timing out, so that the socket is still valid. Otherwise
	  there is no reliable way to detect that the socket is no longer
	  connected.

	* server/CommClient.h, server/CommClient.cpp, server/Account.cpp,
	  server/Connection.h, server/Connection.cpp: Rename close() to
	  disconect() to more accuratly reflect its function.

	* server/CommServer.h, server/CommServer.cpp: Add an implementation
	  based on epoll which is used if available. Much more efficient
	  and scalable.

	* tools/cycmd.cpp: Fix a couple of memory leaks.
2004-11-24 01:19:31 +00:00
Al Riddoch
6156756fdc 2004-10-03 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.cpp, server/CommClient.h, server/CommListener.cpp,
	  server/CommListener.h, server/CommMetaClient.cpp,
	  server/CommMetaClient.h, server/CommPSQLSocket.cpp,
	  server/CommPSQLSocket.h, server/CommServer.cpp, server/CommSocket.h,
	  server/CommUnixListener.cpp, server/CommUnixListener.h:
	  Use int for returning error status.
2004-10-03 01:16:10 +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
b208b13139 2004-08-07 Al Riddoch <alriddoch@zepler.org>
* common/FormattedXMLWriter.h: Add some notes about converting this
	  class for use with any Atlas codec.

	* server/CommClient.h, server/CommIdleSocket.h, server/CommServer.cpp,
	  server/CommServer.h, server/CommSocket.h, server/ServerRouting.h,
	  server/WorldRouter.cpp:
	  Improve the names of some typedefs and clean up some comments.

	* server/WorldRouter.h: Remove declaration of obsolete unimplemented
	  setSerialno() member function.
2004-08-07 11:25:30 +00:00
Al Riddoch
6c46fee3a1 2004-04-23 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp: Add new command to enable and disable server
	  monitoring.

	* server/WorldRouter.cpp, common/BaseWorld.h: Add facility to
	  notify using a SigC signal each type an op is dispatched.

	* server/CommClient.h, server/CommClient.cpp: Fix typo in
	  overridden method which meant it didn't work.

	* server/Admin.h, server/Admin.cpp: Add handler for Monitor operation
	  which turns on and off sending all IG ops to the admin client.

	* rulesets/Python_API.cpp, common/types.h, common/Generic.h,
	  common/BaseEntity.h: Fix Generic op so it can be used, and
	  clean up its use. Add an enumeration for monitor ops.
2004-04-23 17:50:38 +00:00
Al Riddoch
7a9eeffb7e 2003-10-12 Al Riddoch <alriddoch@zepler.org>
* server/CommSocket.h, server/CommUnixListener.cpp,
	  server/CommUnixListener.h, server/CommServer.cpp,
	  server/CommMetaClient.cpp, server/CommMetaClient.h,
	  server/CommListener.cpp, server/CommListener.h,
	  server/CommClient.cpp, server/CommClient.h:
	  Add a new dispatch method to the socket interface, delaying
	  dispatch of incoming data until after it has been read, so that
	  a write timeout cannot occur during reading.
2003-10-12 19:16:52 +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
d960d552d4 2003-05-06 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.h: Switch to using tcp_socket_stream.
2003-05-06 21:58:33 +00:00
Al Riddoch
4f3148695d 2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
	  the local state directory.

	* server/Account.cpp, server/Admin.cpp, server/Admin.h,
	  server/Player.cpp: Tighten up some operation checking and add Create
	  handler to Admin in preparation for handling creation of new OOG
	  things.

	* server/CommLocalClient.cpp, server/CommLocalClient.h,
	  server/CommRemoteClient.cpp, server/CommRemoteClient.h,
	  server/CommUnixListener.cpp, server/CommUnixListener.h,
	  server/CommClient.cpp, server/CommClient.h,
	  server/CommListener.cpp, server/Connection.cpp,
	  server/Connection.h, server/server.cpp:
	  Create new listener and connection classes using unix sockets
	  to allow local trusted connections.

	* client/ClientConnection.cpp, client/ClientConnection.h,
	  client/CommClient.h, client/CreatorClient.cpp,
	  client/ObserverClient.cpp: Add capability to connect over
	  unix socket.
2003-03-16 21:26:06 +00:00
Al Riddoch
2c3b017dd4 2003-03-05 Al Riddoch <alriddoch@zepler.org>
* server/Admin.cpp, server/CommClient.h, server/ServerRouting.h:
	  Small cleanups.
2003-03-05 04:51:39 +00:00
Al Riddoch
8915b80e5d 2002-12-23 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.h, common/BaseWorld.cpp, common/BaseWorld.h,
	  common/OOGThing.h, rulesets/Area.cpp, rulesets/Area.h,
	  rulesets/BaseMind.cpp, rulesets/Character.cpp,
	  rulesets/Character.h, rulesets/Creator.cpp, rulesets/Creator.h,
	  rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Food.cpp,
	  rulesets/Food.h, rulesets/Line.cpp, rulesets/Line.h,
	  rulesets/MemMap.cpp, rulesets/Plant.cpp, rulesets/Plant.h,
	  rulesets/Stackable.cpp, rulesets/Stackable.h,
	  rulesets/Structure.h, rulesets/Thing.cpp, rulesets/Thing.h,
	  rulesets/World.cpp, rulesets/World.h, server/Account.cpp,
	  server/CommClient.cpp, server/CommClient.h,
	  server/Connection.cpp, server/Connection.h,
	  server/EntityFactory.cpp, server/Lobby.cpp, server/Lobby.h,
	  server/PersistantThingFactory.h,
	  server/PersistantThingFactory_impl.h,
	  server/Restorer.cpp, server/Restorer_impl.h, server/ServerRouting.cpp,
	  server/WorldRouter.cpp: Assign ID at entity construction time,
	  and make it constant, and thus unmodifiable.
2002-12-23 23:22:25 +00:00
Al Riddoch
7c4ef64c1d 2002-11-23 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.cpp, server/CommClient.h, server/CommListener.h,
	  server/CommServer.cpp, server/CommServer.h: Remove code commented
	  out during refactoring.
2002-11-23 18:02:46 +00:00
Al Riddoch
3a95e9cfcb 2002-11-23 Al Riddoch <alriddoch@zepler.org>
* Increment to devel version 0.3, and start breaking things.

	* server/CommClient.cpp, server/CommClient.h, server/CommServer.cpp,
	  server/CommServer.h, server/server.cpp, server/CommListener.cpp,
	  server/CommListener.h, server/CommMetaClient.cpp,
	  server/CommMetaClient.h, server/CommSocket.cpp, server/CommSocket.h:
	  Refactor network code so metaserver and listen socket are no longer
	  special cases, opening up the way for a database connection handler.
2002-11-23 17:13:39 +00:00
Al Riddoch
58bb325c7d 2002-08-14 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.h, server/CommClient.cpp: Move exception
	  class to body, so noone else feels tempted to use it.
	  Remove excess debugging output.
2002-08-14 17:12:55 +00:00
Al Riddoch
023c7197f2 2002-08-14 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.cpp, server/CommServer.cpp: Move exception
	  handling into the read method, and ensure correct handling
	  of the reading flag.

	* server/CommClient.h: Fix exception constructor to be
	  ISO compliant.
2002-08-14 17:02:39 +00:00
Al Riddoch
5b32f0ae12 2002-08-14 Al Riddoch <alriddoch@zepler.org>
* server/CommServer.cpp, server/CommClient.h, server/CommClient.cpp:
	  Experimental version of a more comprehensive way to handle
	  client write timeouts, and a possible way to handle traffic
	  shaping in future.
2002-08-14 11:38:30 +00:00
Al Riddoch
92ee147711 2002-08-13 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.h: Don't disconnect connections when writing
	  times out.
2002-08-13 14:52:19 +00:00
Al Riddoch
50edfe7adc Temporary debugging output 2002-08-13 13:37:45 +00:00
Al Riddoch
4c39bc2ecd 2002-07-25 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp, client/CommClient.h, client/CommClient.cpp: Fixed
	  up client code so it does not rely on username being the same as
	  account id.

	* tools/cycmd.cpp: Added look and logout commands to administrate
	  users logged in.

	* server/server.cpp: Fixed metaserver code so it only sends
	  termination packet if metaserver functionality is enabled.

	* server/Connection.h, server/Connection.cpp, server/CommServer.cpp,
	  server/CommClient.h, server/Account.cpp: Fix logouts so they
	  do cause the client connection to be closed.

	* Finished switch from Fire operation to Burn.
2002-07-26 16:47:39 +00:00
Al Riddoch
0d317eaed8 2002-06-26 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.h: Cleaned some stray headers.
2002-06-26 10:39:15 +00:00
Al Riddoch
3337161f0d 2002-06-26 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp, server/CommClient.h,
	  example/client/InheritanceClient.h, client/ClientConnection.h,
	  client/ClientConnection.cpp: Switched to new skstream header
	  location.
2002-06-26 10:14:46 +00:00
Al Riddoch
3eccd4b4ab 2002-06-26 Al Riddoch <alriddoch@zepler.org>
* common/Database.h: Remove stray code.

	* common/globals.cpp: Fix incorrect usage of share dir.

	* server/Account.cpp, server/CommClient.cpp, server/CommClient.h,
	  server/CommServer.cpp, server/Connection.cpp, server/Connection.h,
	  server/Connection_methods.h, server/ExternalMind.cpp,
	  server/Lobby.cpp: Use reference instead of pointer in send
	  methods.

	* server/CommClient.h, server/CommClient.cpp: Adding missing handling
	  for Logout.
2002-06-26 00:58:22 +00:00
Al Riddoch
9a76e7857a 2002-06-19 Al Riddoch <alriddoch@zepler.org>
* server/CommServer.h, server/CommClient.h, server/CommServer.cpp,
	  server/CommClient.cpp: Re-factor the way client connections are
	  handled, so closed and blocked connections are disposed of more
	  cleanly.
2002-06-19 14:17:42 +00:00
Al Riddoch
59a216d507 2002-01-23 Al Riddoch <alriddoch@zepler.org>
* client/ClientConnection.h, server/CommClient.h, tools/cycmd.cpp:
	  Ported to using skstream2.
2002-01-23 23:14:13 +00:00
Al Riddoch
f7b9471b2c 2002-01-14 Al Riddoch <alriddoch@zepler.org>
* C++ compliance fixes for gcc 3.
2002-01-14 19:10:16 +00:00
Al Riddoch
0246eb22c3 * server/WorldRouter.h, server/Connection.h, rulesets/Pedestrian.h,
rulesets/Movement.h, rulesets/MemMap.h, physics/Vector3D.h,
	  modules/WorldTime.h, modules/Location.h, modules/DateTime.h,
	  common/Generic.h, common/BaseWorld.h: Ensure that single argument
	  constructors are explicit, so we don't get any naughty implicit
	  type conversion going on.

	* server/CommClient.h: Added an operation dump feature for debugging.

Al Riddoch  <alriddoch@zepler.org>
2001-10-28 20:21:28 +00:00
Al Riddoch
aa3f4f0db4 * common/BaseWorld.cpp, common/OOGThing.cpp, rulesets/Entity.cpp,
rulesets/EntityFactory.cpp, rulesets/MindFactory.cpp,
	  rulesets/Stackable.cpp, server/Account.cpp, server/Admin.cpp,
	  server/CommClient.h, server/CommServer.cpp, server/CommServer.h,
	  server/Connection.cpp, server/ExternalMind.cpp,
	  server/Persistance.cpp, server/Persistance.h,
	  server/ServerRouting.cpp, server/WorldRouter.cpp,
	  server/server.cpp: Removed unused includes and code. Added some
	  FIXMEs.

	* rulesets/Thing.cpp: Added TO and FROM to faked Sight(Create()) ops.

	* server/OOG_Thing.cpp, server/OOG_Thing.h: Marked files as removed.

Al Riddoch  <alriddoch@zepler.org>
2001-10-18 16:06:06 +00:00
Al Riddoch
ecba58290b * server/CommClient.cpp, server/CommClient.h, server/CommServer.cpp:
Re-organised negotiation code so it is non-blocking. Server is now
	  a bit less easy to attack.

	* Marked files that are no longer part of the build with #error so
	  they never get built by accident.

Al Riddoch  <alriddoch@zepler.org>
2001-09-13 19:35:16 +00:00
Al Riddoch
dcc3dfa85a * server/server.cpp, server/CommClient.h, client/ClientConnection.h,
tools/cycmd.cpp: Switched to using skstream library for socket
	  comms instead of hand rolled fstream based version.

	* ALL FILES: Fixed use of std namespace throughout all code.

This server is now ISO C++ compliand and builds with gcc 3.0.

Al Riddoch  <alriddoch@zepler.org>
2001-08-14 17:52:50 +00:00
Al Riddoch
3969bffbfe * common/inheritance.cpp, common/inheritance.h: Added code to store
atlas object inheritance tree.

	* server/Connection.cpp: Added code to allow client to query
	  atlas object inheritance using get ops.

	* example/client/InheritanceClient.*: Added example client which
	  queries the inheritance tree of the server.

	* rulesets/MemMap.h, rulesets/Py_Map.cpp: Made hooks lists private,
	  and added methods to access them.

	* server/Account.cpp, server/Lobby.h: Added correct handling of OOG
	  look ops when looking at own characters, other accounts, or the
	  lobby.

	* server/ServerRouting.h: Added function to generate serial numbers
	  for operations.

	* server/WorldRouter.cpp: Assign genuine serial number to all
	  in game operations as they are pulled off the queue.

	* Cleaned up header file multiple inclusion checks for uniqueness,
	  and made sure of ISO compliant use of std::string.

Al Riddoch  <alriddoch@zepler.org>
2001-08-02 14:27:06 +00:00
Al Riddoch
db78379824 * server/WorldRouter.h, server/WorldRouter.cpp, rulesets/Thing.cpp,
server/Account.cpp: Modified server to use Entity * instead
	  of Thing *.

	* Removed unnecessary includes from many files.

	* common/config.h, configure.in, common/persistance.cpp:
	  More config changes to try and get it working on Debian.

Al Riddoch  <alriddoch@zepler.org>
2001-06-04 15:24:13 +00:00
Al Riddoch
d74d7117e5 * server/server.cpp, server/CommClient.h, server/Account.h,
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
	  rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
	  rulesets/BaseMind.cpp, common/types.h, common/operations.h,
	  common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
	  Added support for imaginary operations used in a similar way
	  to emoting.

	* server/WorldTime.h: Added update method so underlying DataTime
	  can be updated.

	* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
	  server/ServerRouting.cpp, server/Connection.h,
	  server/Connection.cpp, server/Account.h, server/Account.cpp: Added
	  a lobby object which handles lobby chat. Essentially it stores
	  a list of accounts and allows operations to be sent or broadcast
	  to other accounts.

	* rulesets/Py_WorldTime.cpp: Added python is_now() method because
	  using comparison does not appear to work.

	* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
	  time an operation is received.

	* modules/DateTime.h: Added operator << so DateTime can be sent
	  to cout.

	* common/types.h: Added types for storing accounts in Lobby.

Al Riddoch  <alriddoch@zepler.org>
2001-05-29 11:16:09 +00:00
Al Riddoch
1d0f77d4b5 * server/server.cpp: Added several options to the config file to
make server operation customisable. Added comments.

	* server/server.cpp, server/CommServer.h: Changed methods which
	  return int to returning bool if they are success/faul results.

	* server/WorldRouter.cpp: Removed some unused debugging code.
	  Optimised heavily used code. Changed error message on
	  sending to a non-existant entity so that it is no longer
	  reported as a critical error.

	* server/ServerRouting.h, server/Connection.h,
	  server/Connection_methods.h: inlined simple methods.

	* server/Connection.cpp: Optimised frequently used code.

	* server/CommClient.h: Simplified read method so it no
	  longer checks status redundantly.

	* common/BaseEntity.h, rulesets/Thing.h, rulesets/Entity.h: Added
	  comments explaing purpose of classes.

	* rulesets/Thing.cpp: Added detailed comments, and removed unnecessary
	  initialisation of some attributes.

	* rulesets/PythonMindScript.cpp: Removed redundant NULL check.

	* rulesets/MemMap.h: Added inlines for inlined methods.

	* rulesets/Entity.h, common/BaseEntity.h: Moved seq from BaseEntity
	  to Entity as it does not apply to Out Of Game objects.

	* rulesets/Entity.cpp: Added in stamp/seq attribute. Nade name
	  attribute optional.

	* rulesets/Character.cpp: Simplified some op handling code
	  to make it more readable and hopefully faster. Added comments
	  explaining movement, removed unused commented out code, and
	  removed some unnecessary debugging code.

	* common/operations.h: Explanatory comments.

	* common/*.h: Re-wrote extended operations to fit in
	  with Atlas-C++ 0.4.2 conventions.

	* common/log.*: Commented out unused logging code.

Al Riddoch  <alriddoch@zepler.org>

This code will no longer build against the last release of Atlas-C++ 0.4
Please use cvs Atlas-C++ stable branch.
2001-05-14 17:25:32 +00:00
Al Riddoch
a303326964 * Changed many return statements to match convention.
* rulesets/Thing.cpp: Tweaked ranges code in movement to cut
	  down CPU time used.

	* common/BaseEntity.cpp: Re-ordered opEnumerate so that most
	  frequently used ops are detected soonest.

	* modules/WorldTime.h/.cpp: Moved WorldTime to modules directory.

Al Riddoch  <alriddoch@zepler.org>
2001-04-17 10:14:20 +00:00
Al Riddoch
2ccfaadef3 2001-04-14 Al Riddoch <alriddoch@zepler.org>
* Substantial re-work of object model. Moved many attributes out
	  of BaseEntity class. Changed WoldRouter so it now handles
	  objects in terms of Entity, rather than BaseEntity.

	* Code cleanups, including removing reduntant includes, and
	  getting rid of C style comments.

	* Fixed the way attributes are handled in Set operations and
	  when merging from an Atlas::Message::Object. This fixed
	  problem with setting gender of characters.

	* rulesets/Pedestrian.*, rulesets/Movement.*: Re-named
	  Movement variables to make them clearer. Added in
	  separate handling for collisions from moving to
	  target position. Modified collision handling so
	  objects can slide next to each other.

	* rulesets/Thing.cpp, rulesets/Character.cpp: Cleaned up and
	  rationalised movement code. Much shorter, faster and
	  more compact than before.

	* Made better use of iterators throughout, eliminating unnecessary
	  lookups, and copying of data.

	* Moved all virtual functions out of header files, making
	  less work for the linker.

	* Made more use of const references to avoid the need to copy
	  data before being able to inspect it.

Al Riddoch <alriddoch@zepler.org>
2001-04-16 16:26:44 +00:00
Al Riddoch
43211cf9d1 * Re-wrote class headers files so that all class members now
begin with a lower case letter and do not contain _.

	* Fixed retrieval of Account from database so that the Account
	  is now correctly referenced in the server object.

	* common/types.h: Changed type name to make them clearer.

	* rulesets/Character.h: Moved MovementInfo into its own class
	  file, and made it a base class, with a Pedestrian super class.
	  This allows different types of movement handling classes
	  to be used to handle things that move differently.

Al Riddoch  <alriddoch@zepler.org>
2001-04-11 14:34:15 +00:00
Al Riddoch
488f35b52f * Complete re-write of python script interface to allow other
script types to be cleanly dropped in.

	* Re-work on server and communication related classes to use
	  references where they are apropriate. Code is now much more
	  robust.

	* Huge cleanup of header files removing redundant includes.

	* server/WorldRouter.h: Removed is_object_deleted because it
	  is broken and not used.

	* server/Connection.h: Removed unused disconnect() methods.

	* rulesets/Entity.*: Added new in game base class from which
	  all mind and object classes are derived. This removes
	  clutter of Thing class from mind classes.

	* aiclient/*: Progress with creating AI client for mind handling.

	* common/globals.*: Moved some globals out of server specific files.

	* rulesets/Makefile.am: Separated rulesets code into 3 almost stand
	  alone packages; entities, mind and python interface code.


Acorn may well not work now, but I would apreciate it if people could
test the code on their setups. Lots of code has changed, and almost
everything is now cleaner.

Al Riddoch  <alriddoch@zepler.org>
2001-04-10 19:05:14 +00:00
Al Riddoch
563107b595 * physics/Vector3D.h: Changed boundary condition of inBox() from
when part of entity leaves box to when the whole entity leaves the
	  box.

	* basic.vconf: Make tent use the structure base class.

	* client/define_world.py: Add bounding box to tent.

	* tools/cycmd.cpp: Added password entry.

	* server/Admin.cpp: Added "stat" admin command, to get server
	  details.

	* server/CommClient.h: Fixed include dependencies.

	* common/persistance.cpp: Added findAccount() method for systems
	  without db3.

	* rulesets/Thing.cpp: Added sending Apperance and Disappearance
	  operations to static entities when another entity moves out
	  of sight.

	* rulesets/Character.cpp: Added check to make sure an entity does
	  not collide with itself.

	* rulesets/Thing.cpp: Added check to make sure entity does not move
	  inside itself.

	* rulesets/Py_Location.cpp: Modified python location.copy() method
	  so that only the position and velocity is copied. This should
	  bounding boxes getting set on things which should not have them.

	* rulesets/Character.cpp: Added return statement to movement
	  handling, so move ops without arguments are not handled.

Al Riddoch (alriddoch@zepler.org)
2001-03-22 11:12:38 +00:00
Al Riddoch
291621d9e8 * watchdog/*.c: Corrected C++ style comments in c code.
* */*: Fixed mistake in copyright statement.

	* tools/cypasswd.cpp: Fixed usage message.

	* tools/cycmd.cpp: Added tools for sending administrative commands
	  to server.

	* server/server.cpp: Send terminate instruction to metaserver on
	  server shutdown.

Al Riddoch (alriddoch@zepler.org)
2001-03-16 11:38:14 +00:00
Al Riddoch
f4784cf895 * *: Removed use of "using namespace ..." throughout.
* modules/Location.h: Fixed error in inRange() and finally got rid
	  of the Compiler warning.

	* rulesets/Food.cpp: Fleshed out the cooking code, including how
	  food burns when it is overcooked.

	* rulesets/Stackable.cpp: Implemented divide.

	* common/persistance.*: Added the beginnings of a database backend
	  using the Berkeley db library.

	* server/Account.cpp: Modified addObject, because the attrivutes
	  added by BaseEntity::addObject are not important to accounts.

Al
2001-03-14 12:31:16 +00:00
Al Riddoch
c9ed4bce26 * Added handling of Get operation from client before login, to
determine game type, status and other info.

Al
2001-02-19 18:50:53 +00:00
Al Riddoch
e7eb28366c * all file: Added copyright statement
Al
2001-01-26 16:38:23 +00:00