Skip to content

Instantly share code, notes, and snippets.

@wanderview
Last active August 29, 2015 14:16
Show Gist options
  • Save wanderview/7799767a67f4481904aa to your computer and use it in GitHub Desktop.
Save wanderview/7799767a67f4481904aa to your computer and use it in GitHub Desktop.
channel to InternalResponse body
nsCOMPtr<nsIInputStream> reader;
nsCOMPtr<nsIOutputStream> writer;
nsresult rv = NS_NewPipe(getter_AddRefs(reader), getter_AddRefs(writer),
0, UINT32_MAX, // unlimited size to avoid writer WOULD_BLOCK case
true, true); // non-blocking reader/writer
NS_ENSURE_SUCCESS(rv, rv);
nsRefPtr<InternalResponse> ir = new InternalResponse();
ir->SetBody(reader);
nsRefPtr<Response> response = new Response(global, ir);
nsCOMPtr<nsIStreamListenerTee> tee = do_CreateInstance(NS_STREAMLISTENERTEE_CONTRACTID);
rv = tee->Init(loader, writer, nullptr);
NS_ENSURE_SUCCESS(rv, rv);
channel->AsyncOpen(tee, ...);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment