NetworkSocketStream.h [plain text]
#pragma once
#include "MessageReceiver.h"
#include "MessageSender.h"
#include <WebCore/SocketStreamHandleClient.h>
#include <WebCore/SocketStreamHandleImpl.h>
#include <pal/SessionID.h>
namespace IPC {
class Connection;
class Decoder;
class DataReference;
}
namespace WebKit {
class NetworkSocketStream : public RefCounted<NetworkSocketStream>, public IPC::MessageSender, public IPC::MessageReceiver, public WebCore::SocketStreamHandleClient {
public:
static Ref<NetworkSocketStream> create(URL&&, PAL::SessionID, const String& credentialPartition, uint64_t, IPC::Connection&, WebCore::SourceApplicationAuditToken&&);
~NetworkSocketStream();
void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
void sendData(const IPC::DataReference&, uint64_t);
void sendHandshake(const IPC::DataReference&, const Optional<WebCore::CookieRequestHeaderFieldProxy>&, uint64_t);
void close();
void didOpenSocketStream(WebCore::SocketStreamHandle&) final;
void didCloseSocketStream(WebCore::SocketStreamHandle&) final;
void didReceiveSocketStreamData(WebCore::SocketStreamHandle&, const char*, size_t) final;
void didFailToReceiveSocketStreamData(WebCore::SocketStreamHandle&) final;
void didUpdateBufferedAmount(WebCore::SocketStreamHandle&, size_t) final;
void didFailSocketStream(WebCore::SocketStreamHandle&, const WebCore::SocketStreamError&) final;
private:
IPC::Connection* messageSenderConnection() final;
uint64_t messageSenderDestinationID() final;
NetworkSocketStream(URL&&, PAL::SessionID, const String& credentialPartition, uint64_t, IPC::Connection&, WebCore::SourceApplicationAuditToken&&);
uint64_t m_identifier;
IPC::Connection& m_connection;
Ref<WebCore::SocketStreamHandleImpl> m_impl;
};
}