Commit graph

48 commits

Author SHA1 Message Date
Erik Ogenvik
642faeeb28 Adapt to boost 1.46.
Since we're targetting the latest LTS release of Ubuntu as a nice
baseline, and that currently only supports 1.46, we need to remove the
nice steady_timer code. For now.

This commit should probably be reverted once a newer version of Ubuntu
LTS is available.
2014-02-04 12:25:18 +01:00
Erik Ogenvik
ca91067592 Use std::chrono and steady timer. 2014-02-01 21:18:11 +01:00
Erik Ogenvik
fbf0b752c8 Removed obsolete files.
Since we're now using boost::asio for io.
2014-01-31 21:59:57 +01:00
Erik Ogenvik
368c18fd45 Use boost asio for Avahi. 2014-01-31 14:01:36 +01:00
Olek Wojnar
7f9ff2246d Remove CVS $Id tags
The legacy tags are causing build issues in Debian.
2013-07-15 20:31:59 +02:00
Alistair Riddoch
1ea8bb940c Fix optional avahi code
This rotted because I was developing on a machine with avahi.
2012-11-30 11:27:37 +00:00
Alistair Riddoch
e776106ae9 Move CommClient to being a template - final changes
This required cleaning up a bunch of other things:
  Expose functions to disconnect and flush sockets generally
  Make a new base class for objects that link a socket to the server
2012-07-31 20:21:58 +01:00
Alistair Riddoch
4986afd642 Ensure class members are initialised 2012-05-15 13:10:33 +01:00
Alistair Riddoch
1dc0d5fd52 Convert C casts to static_cast 2012-05-15 11:57:52 +01:00
Alistair Riddoch
3ae768d993 Avoid metaserver code using link from commserver to server 2011-10-30 01:26:13 +02:00
Alistair Riddoch
516f5ebab6 Make the poll structure static
I feel really embarrassed about this one. It should never have worked without
this made static, as this structure pointer was used as a method table by
the library, and would have been full of stack junk. Even now it is completely
unsafe if the server has two instances of the object.
2011-09-13 23:07:10 +01:00
Alistair Riddoch
ba4edb8fdc Improve error reporting when avahi fails 2011-09-13 23:02:51 +01:00
Alistair Riddoch
4dfa616a99 Ensure callbacks are handled immediately
Timers that are required immediately seem to crash if they are delayed.
They are indicated by requesting tv_sec = 0. In this case we flag that such
a timer is present, and loop until this is no longer the case
2011-09-12 13:13:47 +01:00
Alistair Riddoch
f30f244e4a Clean up timeout code to debug it
Gradually get it working, but disable actuall callbacks as they crash
2011-09-12 01:12:50 +01:00
Alistair Riddoch
27cfe5be66 Fix double std::endl in debug output 2011-09-10 13:28:54 +01:00
Alistair Riddoch
e28facc567 Fix up error message 2011-09-09 16:48:33 +01:00
Alistair Riddoch
d0aa8742b1 Merge branch 'master' of github.com:worldforge/cyphesis 2011-09-09 13:36:33 +01:00
Alistair Riddoch
47d55a632a Merge branch 'master' of github.com:worldforge/cyphesis 2011-09-09 11:14:19 +01:00
Alistair Riddoch
724b54229a Replace howl with avahi in log messages 2011-09-09 11:13:45 +01:00
Alistair Riddoch
b9dac3f2ab Enable the no-fail option 2011-09-09 10:53:37 +01:00
Alistair Riddoch
3012c5edfd Remove a notice message for a normal event
Group uncommited is reported when the group is created always.
2011-09-08 23:53:31 +01:00
Alistair Riddoch
0111402e5b Update copyright date 2011-09-08 13:30:25 +01:00
Alistair Riddoch
6fd22c62f9 Correctly check the event mask. 2011-09-07 18:53:49 +01:00
Alistair Riddoch
070259abe8 Make the callback static 2011-09-07 11:10:38 +01:00
Alistair Riddoch
87c3043664 Change name of callback to remove avahi_
It's bad practice to have names that could collide with the namespace
of the C library
2011-09-07 11:09:03 +01:00
Alistair Riddoch
661634e6bc Clean up a load of dirty formatting 2011-09-06 14:14:05 +01:00
Alistair Riddoch
61eb5b51f4 Remove support for howl
The library no longer seems to be widely available, and is generally
considered obsolete. Even if it was desirable to keep it around, it
is no longer reasonably practical to keep this code from rotting.
2011-09-05 13:32:39 +01:00
Alistair Riddoch
86068c36c2 Add cassert to the code for avahi support. 2009-09-12 19:19:41 +01:00
Alistair Riddoch
61d57f84b7 Move socket config options to the new mechanism. 2009-04-08 21:22:19 +01:00
Al Riddoch
09b8ef151e Strip out all the old Id data 2009-04-08 10:48:43 +01:00
Al Riddoch
d0599717ae 2007-12-05 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Fix a leak of the TXT record published
	  using avahi.
2007-12-05 01:01:51 +00:00
Al Riddoch
2069f3dd4c 2007-07-29 Al Riddoch <alriddoch@zepler.org>
* common/log.cpp, common/log.h: Switch to taking a C++ string reference
	  rather than a char *, as it is not really an optimisation, and it
	  makes the code simpler to read and write.

	* client/BaseClient.cpp, client/ClientConnection.cpp,
	  common/AtlasFileLoader.cpp, common/BaseEntity.cpp,
	  common/Database.cpp, common/globals.cpp, common/id.cpp,
	  common/inheritance.cpp, common/log.cpp, common/log.h,
	  rulesets/Character.cpp, rulesets/Creator.cpp, rulesets/Entity.cpp,
	  rulesets/MemMap.cpp, rulesets/Motion.cpp, rulesets/Pedestrian.cpp,
	  rulesets/Py_Object.cpp, rulesets/Py_RootEntity.cpp,
	  rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
	  rulesets/Python_API.cpp, rulesets/Thing.cpp, server/Account.cpp,
	  server/Admin.cpp, server/ArithmeticFactory.cpp,
	  server/CommClient.cpp, server/CommListener.cpp,
	  server/CommMDNSPublisher.cpp, server/CommServer.cpp,
	  server/Connection.cpp, server/EntityFactory.cpp,
	  server/Persistance.cpp, server/Restoration.cpp,
	  server/ScriptFactory.cpp, server/TaskFactory.cpp,
	  server/WorldRouter.cpp, server/server.cpp: Convert over to using
	  new API correctly.

	* data/mason.xml: Add biomass and transient to fircone, making its
	  script obsolete:
2007-07-29 03:33:33 +00:00
Al Riddoch
c01db44c07 2007-07-02 Al Riddoch <alriddoch@zepler.org>
* modules/Location.h, rulesets/Py_BBox.h, rulesets/Py_Point3D.h,
	  rulesets/Py_Quaternion.h, rulesets/Py_Vector3D.h,
	  server/CommMDNSPublisher.cpp: Use double quotes not angle brackets
	  when including headers out of the cyphesis source tree.
2007-07-03 01:22:47 +00:00
Al Riddoch
6e70255b29 2007-05-03 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Use the configured port number, not
	  a hard coded default when advertising the service.
2007-05-03 11:13:10 +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
fcad83a64c 2006-09-17 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Re-write isOpen so that it checks
	  the socket fd is not -1.
2006-09-17 00:00:45 +00:00
Al Riddoch
b43a0faf98 2006-08-07 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Report a warning if avahi frees
	  a watch data structure, which is currently not implemented.
	  Move checks on the event type avahi requires to the callback
	  called by avahi, so it is only checked once. Ensure that no
	  events are flagged once the events have been processed.
2006-08-07 13:59:52 +00:00
Al Riddoch
ad7eae558d 2006-07-08 Al Riddoch <alriddoch@zepler.org>
* server/Account.cpp: Re-order checks for increased robustness.
	  Add more error reports.

	* server/CommMDNSPublisher.cpp: Remove a redundant FIXME.
2006-07-09 00:04:37 +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
82d8bbcb6a 2005-12-07 Al Riddoch <alriddoch@zepler.org>
* server/ServerRouting.h: Add accessor for client count.

	* server/CommMDNSPublisher.h, server/CommMDNSPublisher.cpp:
	  Add alternative MDNS-SD handler using Avahi, which is preferred
	  over howl.

	* server/server.cpp: CommMDNSPublisher is now an idler as well
	  as a socket.
2005-12-07 02:43:08 +00:00
Al Riddoch
1d69ff898b 2005-12-05 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Use server name rather than
	  "WorldForge Server" when publishing via MDNS service discovery
	  to avoid name clashes when using avahi.
2005-12-06 12:36:30 +00:00
Al Riddoch
8e603b37ca 2005-07-04 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Don't finalise MDNS session when an
	  error is detected, instead finalise in destructor, so the file
	  descriptor is still handled ok removing from poll set.
2005-07-04 12:54:24 +00:00
Al Riddoch
6ea4a3b819 2005-05-03 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Avoid more namespace pollution from
	  the libhowl headers.
2005-05-03 12:51:06 +00:00
Al Riddoch
ecadb5a0c1 2004-01-19 Al Riddoch <alriddoch@zepler.org>
* configure.ac: Increment version number. Add automake options
	  to enforce NEWS, and distribute using bzip2.

	* cyphesis.spec.in: Update rpm spec to use the tar.bz2 version of the
	  source.

	* server/CommMDNSPublisher.cpp: Suppress some warnings due to mess
	  in the howl headers.

	* tools/cyphesis.sh: Script to run the server as part of a binary
	  tarball distribution.
2005-01-19 01:46:00 +00:00
Al Riddoch
27040b240b 2004-12-13 Al Riddoch <alriddoch@zepler.org>
* client/ClientConnection.cpp, common/globals.cpp, common/globals.h,
	  server/CommMDNSPublisher.cpp, server/server.cpp, server/slave.cpp,
	  tools/cycmd.cpp: Add new port number settings for things like
	  peer connections, and listen sockets for an AI slave.

	* server/CommUnixListener.cpp, server/CommUnixListener.h:
	  Parameterise socket name for listen socket.
2004-12-13 12:22:35 +00:00
Al Riddoch
881eb9f4f7 2004-11-12 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Add some commented debug output.
2004-11-12 21:54:28 +00:00
Al Riddoch
6737779ad5 2004-11-12 Al Riddoch <alriddoch@zepler.org>
* server/CommMDNSPublisher.cpp: Fix segfault problems by using an
	  RFC compliant service type. Fill out the error handling and
	  reporting and clean out the debug output.
2004-11-12 01:21:46 +00:00
Al Riddoch
9cdf37275e Add new files 2004-11-11 14:26:45 +00:00