Aw

 view release on metacpan or  search on metacpan

xs/Aw.xs  view on Meta::CPAN

#===============================================================================



Aw::Adapter
_new ( CLASS, version, ... )
	char * CLASS
	char * version

	PREINIT:
		awAdapterProperties * awProperties = NULL;
		int argc = 0;
		char ** argv;

	CODE:
		RETVAL = (xsAdapter *)safemalloc ( sizeof(xsAdapter) );	
		if ( RETVAL == NULL ) {
			setErrMsg ( &gErrMsg, 1, "Aw::Adapter::new:  unable to malloc new adapter" );
#ifdef AWXS_WARNS
			if ( gWarn )
				warn ( gErrMsg );
#endif /* AWXS_WARNS */
			XSRETURN_UNDEF;
		}
		/* initialize the error cleanly */
		RETVAL->err      = AW_NO_ERROR;
		RETVAL->errMsg   = NULL;
		RETVAL->Warn     = gWarn;

		RETVAL->handle   = NULL;
		RETVAL->callback = 0x0;
		RETVAL->firstCB  = 0x0;


   		if( SvROK(ST(2)) && (SvTYPE(SvRV(ST(2))) == SVt_PVHV) )
			awProperties = awxsHashToProperties ( (HV*)SvRV( ST(2) ) );
		else {
			int i;
			argv = XS_unpack_charPtrPtr ( ST(2) ); 
			argc = av_len ( (AV*)SvRV( ST(2) ) ) + 1;

			awProperties = awAdapterLoadProperties ( argc, argv );

			XS_release_charPtrPtr ( argv );

			if ( awProperties == NULL )
				XSRETURN_UNDEF;
		}

		if ( awProperties ) {
			/* start logging */
			awAdapterInitLogging ( awProperties );

			/* create the adapter structure */
			RETVAL->adapter = awAdapterCreate ( awProperties, version );
		}
		else {
			RETVAL->adapter = NULL;
		}

		/* register our callbacks */
		RETVAL->adapter->setupEventFunction         =& setupEvent;
		RETVAL->adapter->processRequestFunction     =& processRequest;
		RETVAL->adapter->cleanupEventTypeFunction   =& cleanupEventType;
		RETVAL->adapter->beginSetupFunction         =& beginSetup;
		RETVAL->adapter->endSetupFunction           =& endSetup;
		RETVAL->adapter->processPublicationFunction =& processPublication;
		RETVAL->adapter->beginTransactionFunction   =& beginTransaction;
		RETVAL->adapter->endTransactionFunction     =& endTransaction;

	OUTPUT:
	RETVAL



void
addEvent ( self, event )
	Aw::Adapter self
	Aw::EventType event

	CODE:
		AWXS_CLEARERROR

		awAdapterAddEvent ( self->adapter, event->adapterET );



void
checkPublications ( self )
	Aw::Adapter self

	CODE:
		AWXS_CLEARERROR

		awAdapterCheckPublications ( self->adapter );



awaBool
createAdapterClient ( self, stateShare )
	Aw::Adapter self
	awaBool stateShare

	PREINIT:
		awaBool keepShareState;

	CODE:
		AWXS_CLEARERROR

		keepShareState = self->adapter->useSharedState;
		self->adapter->useSharedState = stateShare;

		gErr = self->err = awAdapterCreateClient ( self->adapter );

		AWXS_CHECKSETERROR

		self->adapter->useSharedState = keepShareState;

		RETVAL = ( self->err == AW_NO_ERROR ) ? awaFalse : awaTrue;

	OUTPUT:



( run in 1.811 second using v1.01-cache-2.11-cpan-140bd7fdf52 )