#include "event.h"
#include <string.h>
event::event( const char* name ) {
APIRET rc;
// --------------------------
// "\\sem32\\" + name + NULL;
// --------------------------
char* fullname = new char[ strlen( name ) + 8 ];
strcpy( fullname, "\\SEM32\\" );
strcpy( fullname + 7, name );
// ---------------------------
// Try creating the semaphore.
// ---------------------------
rc = DosCreateEventSem( fullname, &handle, 0, 0 );
if ( rc == 285 ) {
// -------------------------------------
// Duplicate name encountered. try just
// opening the semaphore
// -------------------------------------
handle = 0;
DosOpenEventSem( fullname, &handle );
}
// ----------------------
// block on the semaphore
// ----------------------
ULONG dummy;
DosWaitEventSem( handle, -1 ); //infinite wait
// ----------------------------------
// Reset the semaphore
// ----------------------------------
DosResetEventSem( handle, &dummy );
delete [] fullname;
}
void event::post( const char* name ) {
HEV handle;
// --------------------------
// "\\sem32\\" + name + NULL;
// --------------------------
char* fullname = new char[ strlen( name ) + 8 ];
strcpy( fullname, "\\SEM32\\" );
strcpy( fullname + 7, name );
handle = 0;
DosOpenEventSem( fullname, &handle );
DosPostEventSem( handle );
delete [] fullname;
}
//End of File