WebSocketServer.cpp [plain text]
#include "config.h"
#if ENABLE(INSPECTOR_SERVER)
#include "WebSocketServer.h"
#include "WebSocketServerConnection.h"
#include <WebCore/SocketStreamHandle.h>
#include <wtf/PassOwnPtr.h>
#if PLATFORM(QT)
#include "WebSocketServerQt.h"
#endif
using namespace WebCore;
namespace WebKit {
WebSocketServer::WebSocketServer(WebSocketServerClient* client)
: m_state(Closed)
, m_client(client)
, m_port(0)
{
platformInitialize();
}
WebSocketServer::~WebSocketServer()
{
close();
}
bool WebSocketServer::listen(const String& bindAddress, unsigned short port)
{
ASSERT(port);
if (m_state == Listening)
return false;
bool isNowListening = platformListen(bindAddress, port);
if (isNowListening) {
m_bindAddress = bindAddress;
m_port = port;
m_state = Listening;
}
return isNowListening;
}
void WebSocketServer::close()
{
if (m_state == Closed)
return;
platformClose();
m_port = 0;
m_bindAddress = String();
}
void WebSocketServer::didAcceptConnection(PassOwnPtr<WebSocketServerConnection> connection)
{
m_connections.append(connection);
}
void WebSocketServer::didCloseWebSocketServerConnection(WebSocketServerConnection* connection)
{
Deque<OwnPtr<WebSocketServerConnection> >::iterator end = m_connections.end();
for (Deque<OwnPtr<WebSocketServerConnection> >::iterator it = m_connections.begin(); it != end; ++it) {
if (it->get() == connection) {
m_connections.remove(it);
return;
}
}
ASSERT_NOT_REACHED();
}
}
#endif // ENABLE(INSPECTOR_SERVER)