mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-29 15:46:07 +00:00
77 lines
2.3 KiB
C
77 lines
2.3 KiB
C
|
#pragma once
|
||
|
#include <ocidl.h>
|
||
|
#include "..\Components\wac_network\wac_network_http_receiver_api.h"
|
||
|
#include "api.h"
|
||
|
|
||
|
|
||
|
class JNetCOM : public IDispatch, public ifc_downloadManagerCallback
|
||
|
{
|
||
|
public:
|
||
|
JNetCOM(IDispatch *_dispatch);
|
||
|
~JNetCOM();
|
||
|
STDMETHOD(QueryInterface)(REFIID riid, PVOID *ppvObject);
|
||
|
STDMETHOD_(ULONG, AddRef)(void);
|
||
|
STDMETHOD_(ULONG, Release)(void);
|
||
|
// *** IDispatch Methods ***
|
||
|
STDMETHOD (GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgdispid);
|
||
|
STDMETHOD (GetTypeInfo)(unsigned int itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
|
||
|
STDMETHOD (GetTypeInfoCount)(unsigned int FAR * pctinfo);
|
||
|
STDMETHOD (Invoke)(DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR *pdispparams, VARIANT FAR *pvarResult, EXCEPINFO FAR * pexecinfo, unsigned int FAR *puArgErr);
|
||
|
|
||
|
STDMETHOD (Abort)();
|
||
|
STDMETHOD (AddHeader)(LPCWSTR header);
|
||
|
STDMETHOD (Connect)(LPCWSTR url, LPCWSTR requestMethod);
|
||
|
STDMETHOD (GetContent)(VARIANT *variant);
|
||
|
STDMETHOD (GetContentAsString)(VARIANT *variant);
|
||
|
STDMETHOD (GetErrorString)(VARIANT *variant);
|
||
|
STDMETHOD (GetHeader)(LPCWSTR header, VARIANT *variant);
|
||
|
STDMETHOD (GetReply)(VARIANT *variant);
|
||
|
STDMETHOD (GetReplyCode)(VARIANT *variant);
|
||
|
STDMETHOD (GetUrl)(VARIANT *variant);
|
||
|
|
||
|
/* Dispatchable */
|
||
|
size_t Dispatchable_AddRef();
|
||
|
size_t Dispatchable_Release();
|
||
|
|
||
|
void OnFinish(DownloadToken token);
|
||
|
void OnTick(DownloadToken token);
|
||
|
void OnError(DownloadToken token, int error);
|
||
|
void OnCancel(DownloadToken token);
|
||
|
void OnConnect(DownloadToken token);
|
||
|
void OnInit(DownloadToken token);
|
||
|
|
||
|
void Call(PAPCFUNC func);
|
||
|
/*
|
||
|
methods:
|
||
|
Abort
|
||
|
AddHeader (only call this during OnInit)
|
||
|
Connect (here is where you specify the URL)
|
||
|
GetContent
|
||
|
GetContentAsString
|
||
|
GetErrorString
|
||
|
GetHeader
|
||
|
GetReply
|
||
|
GetReplyCode
|
||
|
GetUrl (may not be the same as what you originally connected because of redirection)
|
||
|
SetPostString (only call this during OnInit)
|
||
|
|
||
|
callback methods in YOUR object:
|
||
|
OnCancel
|
||
|
OnConnect
|
||
|
OnError
|
||
|
OnFinish
|
||
|
OnTick (called every once in a while)
|
||
|
OnInit (called immediately after Connect(), you can add headers and shit here
|
||
|
|
||
|
*/
|
||
|
|
||
|
private:
|
||
|
LONG refCount;
|
||
|
DWORD threadId;
|
||
|
HANDLE threadHandle;
|
||
|
IDispatch *dispatch;
|
||
|
DownloadToken token;
|
||
|
bool retained;
|
||
|
protected:
|
||
|
RECVS_DISPATCH;
|
||
|
};
|