**************************************************************************/
#include "Service.hh"
+#include "Socket.hh"
+
+
+#define SOLICIT 0x1234ABCD
+#define RESPONSE 0xABCD1234
namespace Mf {
-ServiceBroadcaster::ServiceBroadcaster(const std::string& name)
+int Service::handlePacket(SocketMultiplexer& sock,
+ Packet& packet,
+ const SocketAddress& address)
{
+ uint32_t magic = 0;
+
+ try
+ {
+ packet >> magic;
+ }
+ catch (...)
+ {
+ return -1;
+ }
+
+ if (magic == SOLICIT)
+ {
+ Packet out;
+ out << RESPONSE << mAddress.service() << mText;
+ sock.socket().write(out);
+ return 0;
+ }
+ return -1;
}
-void ServiceBroadcaster::update(Scalar t, Scalar dt)
+int ServiceFinder::handlePacket(SocketMultiplexer& sock,
+ Packet& packet,
+ const SocketAddress& address)
{
-}
+ try
+ {
+ uint32_t magic;
+ packet >> magic;
+ if (magic == RESPONSE)
+ {
+ std::string service;
+ std::string text;
+ packet >> service >> text;
+ if (service == mService)
+ {
+ mServices.push_back(Service(address, text));
+ return 0;
+ }
+ }
+ }
+ catch (...)
+ {
+ }
-ServiceLocator::ServiceLocator(const std::string& name)
-{
+ return -1;
}
-void ServiceLocator::update(Scalar t, Scalar dt)
+ServiceFinder::ServiceFinder(const std::string& service, int type)
{
}