#ifndef NETWORKLIB_NETWORK_H
#define NETWORKLIB_NETWORK_H

class RouterList;
class RouterListIterator;
class ConnectionList;
class ConnectionListIterator;

class Network : public NetworkObject {
	public:
		Network();
		virtual ~Network();

		void RemoveAllPackets();

		void AddRouter( const RouterPosition & router_psotion );
		void RemoveRouter( const RouterPosition & router_psotion );

		unsigned int GetRouterNum() const;
		Router & GetRouter( const RouterPosition & router_psotion ) const; 
		Router & GetRouter( int x , int y ) const; 
		void InitRouterListIterator( RouterListIterator & ); 

		void AddConnection( Router & a , Router & b );
		void RemoveConnection( Router & a , Router & b );
		
		unsigned int  GetConnectionNum();
		Connection & GetConnection( const Router & a , const Router & b ) const;
		void InitConnectionListIterator( ConnectionListIterator & ); 

	private:
		
		RouterList		* router_list;
		ConnectionList	* connection_list;
};

#endif //NETWORKLIB_NETWORK_H