我正在尝试构建一个NPAPI,它将按需下载部分流。我一直在取得进步(compared to previously)。我现在有:
int32_t NPP_WriteReady(NPP instance, NPStream* stream)
{
NPByteRange range;
range.offset = 0;
range.length = 300; // at least a non-null size request
range.next = NULL;
NPError e = s_pBrowserFunctions->requestread(stream,&range));
return 0;
}
似乎正朝着正确的方向发展。我可以在Network History(系统监视器)中看到该插件正在下载几个Mbytes然后最终停止。
我现在想要的是能够更好地控制这种“惯性”。我无法从NPN_RequestRead拨打NPP_NewStream,因为它太早并且返回错误。我无法从NPP_Write调用NPN_RequestRead,因为它似乎为时已晚。从NPP_WriteReady调用NPN_RequestRead仍然会下载一些我很乐意跳过的东西。
如何确保在第一次拨打NPN_RequestRead之前只下载最少的内容?