Commit graph

59 commits

Author SHA1 Message Date
Al Riddoch
0fac80ad64 2009-01-29 Al Riddoch <alriddoch@googlemail.com>
* server/CommClient.cpp, server/CommClient.h,
	  server/CommHttpClient.cpp, server/CommHttpClient.h:
	  Convert two stream classes to use the stream base class.
2009-01-29 18:11:35 +00:00
Al Riddoch
61415545d8 2009-01-28 Al Riddoch <alriddoch@googlemail.com>
* server/CommPeer.h, server/CommPeer.cpp: Re-factor CommPeer to
	  only be used for initiating peer connections.

	* server/Admin.cpp: Use the modified CommPeer constructor.

	* server/CommClient.h, server/CommClient.cpp: Make the connection
	  a pointer rather than a reference, and pass it in during setup.

	* server/CommClientFactory.h, server/CommClientFactory.cpp: Re-factor
	  the commclient factory to take connection type as a template param,
	  and create the client and connection objects separately.

	* server/server.cpp: Use the modified CommClientFactory parameter.

	* server/Makefile.am: Remove the different kinds of client class
	  from the build.
2009-01-28 02:21:29 +00:00
Al Riddoch
40a3bd1018 2008-12-10 Al Riddoch <alriddoch@googlemail.com>
* common/Identified.cpp, common/Identified.h, rulesets/Character.h,
	  rulesets/LocatedEntity.h, server/Account.h, server/Admin.cpp,
	  server/CommClient.cpp, server/CommClient.h, server/Connection.cpp,
	  server/Connection.h, server/ExternalMind.h,
	  server/ExternalProperty.cpp, server/ExternalProperty.h,
	  server/Lobby.h, server/Master.h, server/Peer.h,
	  server/ServerRouting.h, server/SlaveClientConnection.h:
	  Rename IdentifiedRouter to Router as it's the base class
	  for pretty much all routers.
2008-12-10 01:16:37 +00:00
Al Riddoch
adc64c3ced 2008-01-28 Al Riddoch <alriddoch@googlemail.com>
* client/BaseClient.cpp, common/BaseEntity.cpp, common/BaseEntity.h,
	  common/Identified.cpp, common/Identified.h, common/Makefile.am,
	  common/OOGThing.cpp, common/OOGThing.h, common/OperationRouter.cpp,
	  common/OperationRouter.h, rulesets/Character.h, rulesets/Entity.h,
	  rulesets/LocatedEntity.cpp, rulesets/LocatedEntity.h,
	  server/Account.cpp, server/Account.h, server/Admin.cpp,
	  server/CommClient.cpp, server/CommClient.h, server/Connection.cpp,
	  server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
	  server/ExternalProperty.cpp, server/ExternalProperty.h,
	  server/Lobby.cpp, server/Lobby.h, server/Master.cpp, server/Master.h,
	  server/Peer.cpp, server/Peer.h, server/ServerRouting.cpp,
	  server/ServerRouting.h, server/SlaveClientConnection.cpp,
	  server/SlaveClientConnection.h: Factor out the more pointless base
	  classes, in favor of simple interface. Move destroyed signal to
	  Entity, which is the only place it is needed.
2008-01-28 23:48:30 +00:00
Al Riddoch
03a8bf7d4f 2008-01-17 Al Riddoch <alriddoch@googlemail.com>
* common/Identified.cpp, common/Identified.h: Add a new base class
	  which combines Identified with OperationRouter.

	* server/CommClient.cpp, server/CommClient.h: Modify CommClient to
	  refer to it's operation routing object purely by the OperationRouter
	  interface.

	* server/Connection.cpp, server/Connection.h,
	  server/TrustedConnection.cpp: Re-factor connection routers so
	  they no longer inherit from BaseEntity, and instead inherit
	  cleanly from the minimum required interfaces.
2008-01-18 15:26:44 +00:00
Al Riddoch
1a59d10ddd 2006-12-22 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.h, server/CommListener.h, server/CommLocalClient.h,
	  server/CommMDNSPublisher.h, server/CommMaster.h,
	  server/CommMetaClient.h, server/CommPSQLSocket.h,
	  server/CommPeer.h, server/CommPeerListener.h,
	  server/CommRemoteClient.h, server/CommServer.h,
	  server/CommSlaveClient.h, server/CommSlaveListener.h,
	  server/CommSocket.cpp, server/CommSocket.h,
	  server/CommUnixListener.h: Add a documentation group for socket
	  classes.

	* rulesets/Py_BBox.h, rulesets/Py_EntityWrapper.h,
	  rulesets/Py_Location.h, rulesets/Py_Map.h, rulesets/Py_Mind.h,
	  rulesets/Py_Object.h, rulesets/Py_Operation.h,
	  rulesets/Py_Oplist.h, rulesets/Py_Optime.h, rulesets/Py_Point3D.h,
	  rulesets/Py_Property.h, rulesets/Py_Quaternion.h,
	  rulesets/Py_RootEntity.h, rulesets/Py_Task.h, rulesets/Py_Thing.h,
	  rulesets/Py_Vector3D.h, rulesets/Py_World.h, rulesets/Py_WorldTime.h,
	  rulesets/Python_API.cpp: Add documentation group for Python wrapper
	  types.

	* rulesets/Container.h, rulesets/PythonScript.cpp,
	  server/ScriptFactory.h, server/ScriptFactory.cpp:
	  Add more inline documentation comments.
2006-12-22 02:14:44 +00:00
Al Riddoch
9a56dac06c 2006-10-26 Al Riddoch <alriddoch@zepler.org>
* Add RCS Id keywords to every file, for better version tracking.
2006-10-26 00:48:00 +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
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