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)
{
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);
m_state = isNowListening ? Listening : Closed;
return isNowListening;
}
void WebSocketServer::close()
{
if (m_state == Closed)
return;
platformClose();
}
void WebSocketServer::didAcceptConnection(PassRefPtr<SocketStreamHandle> socketHandle)
{
m_connections.append(adoptPtr(new WebSocketServerConnection(socketHandle, m_client, this)));
}
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)