Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

browse_master_generic.cpp

Go to the documentation of this file.
00001 
00002 #ifdef WIN32
00003 #pragma warning (disable:4786)
00004 #endif
00005 
00006 #include "browse_master_generic.h"
00007 #include "API/Core/System/event_listener.h"
00008 
00010 // CL_BrowseMaster_Generic construction:
00011 
00012 CL_BrowseMaster_Generic::CL_BrowseMaster_Generic(const CL_IPAddress &bind_address)
00013 : accept_socket(CL_Socket::tcp)
00014 {
00015         accept_socket.bind(bind_address);
00016         accept_socket.listen(5);
00017 }
00018         
00019 CL_BrowseMaster_Generic::~CL_BrowseMaster_Generic()
00020 {
00021 }
00022 
00024 // CL_BrowseMaster_Generic attributes:
00025 
00027 // CL_BrowseMaster_Generic operations:
00028 
00029 void CL_BrowseMaster_Generic::run()
00030 {
00031         while (true)
00032         {
00033                 wait_for_data();
00034 
00035                 // todo: accept, read and write!
00036         }
00037 }
00038 
00040 // CL_BrowseMaster_Generic implementation:
00041 
00042 void CL_BrowseMaster_Generic::wait_for_data()
00043 {
00044         std::list<CL_Socket>::iterator it;
00045         CL_EventListener listener;
00046 
00047         // listen for incoming servers and clients.
00048         listener.add_trigger(accept_socket.get_read_trigger());
00049 
00050         // listen for client output data:
00051         for (it = clients.begin(); it != clients.end(); it++)
00052         {
00053                 CL_Socket &socket = *it;
00054                 listener.add_trigger(socket.get_write_trigger());
00055         }
00056 
00057         // listen for server input data.
00058         for (it = servers.begin(); it != servers.end(); it++)
00059         {
00060                 CL_Socket &socket = *it;
00061                 listener.add_trigger(socket.get_read_trigger());
00062         }
00063 
00064         listener.wait();
00065 }

Generated at Wed Apr 4 19:53:59 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001