- From: jayprakash <jayprakash@opussoft.com>
- Date: Mon, 18 Mar 2002 13:10:44 +0530
- To: <www-lib@w3.org>
Hello ,
1) is www-lib support multithread application ?
2) can I init in one thread and post from other ?
we have tried it but it doesn't seems to be working .
if we init in one thread then all the post from that thread works.
but from other thread it blocks in event loop GetMesssage
waiting for reply .....
Thanks and Regards
Jai
////////////////////////////////
bool gIsDone = false ;
DWORD WINAPI ThreadCheck( LPVOID lpParameter )
{
if ( ! gIsDone )
{
WaitForSingleObject( ( HANDLE ) lpParameter, INFINITE ) ;
}
CoInitialize(NULL);
double lStartTime = GetTime();
long i = 0 ;
do
{
/* Create a new premptive client */
HTProfile_newNoCacheClient("HTTPTest", "1.0");
/* Add our own filter to handle termination */
HTNet_addAfter(terminate_handler, NULL, NULL, HT_ALL, HT_FILTER_LAST);
HTHost_setEventTimeout(20000);
// Delete all Registered proxies in libwww
HTProxy_deleteAll();
HTNoProxy_deleteAll();
// regex for what to proxy
HTProxy_addRegex("http://www.", "http://192.200.8.20:80", -1);
// regex for what not to proxy
HTNoProxy_addRegex("http://localhost", -1);
/* Initialize libwww */
//HTProfile_newPreemptiveClient("HTTPTest ", "1.1");
char * lData = "2=dataforpostTEST";
HTAssocList * formfields = HTAssocList_new();
HTParseFormInput(formfields, lData);
char * cwd = HTGetCurrentDirectoryURL();
char * dst_str = "http://192.200.8.252/default.asp?1=Dataforget=hi" ;
HTAnchor * dst = HTAnchor_findAddress(dst_str);
HTRequest * lrequest = HTRequest_new();
HTRequest_setOutputFormat(lrequest, WWW_SOURCE);
HTChunk * chunk = HTPostFormAnchorToChunk(formfields, dst, lrequest);
if (chunk)
{
char * string;
//Go into the event loop...
HTEventList_loop(lrequest);
// print the chunk result
string = HTChunk_toCString(chunk);
AfxMessageBox(string);
HT_FREE(string);
}
else
{
AfxMessageBox("Type the URL you want to accces on the command line\n");
}
/* Clean up the form fields */
HTAssocList_delete(formfields);
HTRequest_delete(lrequest);
/* Terminate the Library */
//HTProfile_delete();
/* Terminate the Library */
HTLibTerminate();
i++ ;
}
while(i < 1 ) ;
double lEndTime = GetTime();
double lDiff = ( lEndTime - lStartTime ) / 1000;
char lDiffStr[30] = "\0";
sprintf( lDiffStr, "%20.3f", lDiff );
AfxMessageBox(lDiffStr ) ;
return 0;
}
void CTestDlg::OnThreadTest()
{
UpdateData() ;
HANDLE lHandle = NULL;
DWORD lThreadId = 0;
HANDLE hEvent = NULL ;
hEvent = CreateEvent( NULL, TRUE, FALSE, "StartThreadCheck" );
int i = 0 ;
do
{
lHandle = CreateThread( NULL, 0, ThreadCheck, NULL, 0, &lThreadId );
i ++ ;
}
while( i < 1 ) ;
gIsDone = true ;
SetEvent(hEvent) ;
}
Received on Monday, 18 March 2002 02:40:13 UTC