DatabaseToWebProcessConnection.h [plain text]
#ifndef DatabaseToWebProcessConnection_h
#define DatabaseToWebProcessConnection_h
#include "Connection.h"
#include "DatabaseProcessIDBConnection.h"
#include "MessageSender.h"
#include <wtf/HashMap.h>
#if ENABLE(DATABASE_PROCESS)
namespace WebKit {
class DatabaseToWebProcessConnection : public RefCounted<DatabaseToWebProcessConnection>, public IPC::Connection::Client, public IPC::MessageSender {
public:
static PassRefPtr<DatabaseToWebProcessConnection> create(IPC::Connection::Identifier);
~DatabaseToWebProcessConnection();
IPC::Connection* connection() const { return m_connection.get(); }
private:
DatabaseToWebProcessConnection(IPC::Connection::Identifier);
virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) override;
virtual void didClose(IPC::Connection*) override;
virtual void didReceiveInvalidMessage(IPC::Connection*, IPC::StringReference messageReceiverName, IPC::StringReference messageName) override;
void didReceiveDatabaseToWebProcessConnectionMessage(IPC::Connection*, IPC::MessageDecoder&);
virtual IPC::Connection* messageSenderConnection() override { return m_connection.get(); }
virtual uint64_t messageSenderDestinationID() override { return 0; }
#if ENABLE(INDEXED_DATABASE)
void establishIDBConnection(uint64_t serverConnectionIdentifier);
void removeDatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier);
typedef HashMap<uint64_t, RefPtr<DatabaseProcessIDBConnection>> IDBConnectionMap;
IDBConnectionMap m_idbConnections;
#endif // ENABLE(INDEXED_DATABASE)
RefPtr<IPC::Connection> m_connection;
};
}
#endif // ENABLE(DATABASE_PROCESS)
#endif // DatabaseToWebProcessConnection_h