Ejemplo n.º 1
0
GSTATUS 
DDSDeleteAssUserDB (
	u_i4 user_id, 
	u_i4 db_id) 
{
	GSTATUS err = GSTAT_OK;

	err = DDFSemOpen(&dds_semaphore, TRUE);
	if (err == GSTAT_OK) 
	{
		err = DDGDelete(
				&dds_session, 
				DDS_OBJ_ASS_USER_DB, 
				"%d%d", 
				&user_id, 
				&db_id);

		if (err == GSTAT_OK)
			err = DDSMemDeleteAssUserDB(user_id, db_id);

		if (err == GSTAT_OK) 
			err = DDGCommit(&dds_session);
		else 
			CLEAR_STATUS(DDGRollback(&dds_session));

		CLEAR_STATUS(DDFSemClose(&dds_semaphore));
	}
return(err);
}
Ejemplo n.º 2
0
/*
** Name: WSMReleaseUsrSession() - Release user session
**
** Description:
**
** Inputs:
**	USR_PSESSION *usr_session
**
** Outputs:
**
** Returns:
**	GSTATUS	:	GSTAT_OK
**
** Exceptions:
**	None
**
** Side Effects:
**	None
**
** History:
**      03-Jul-98 (fanra01)
**          Enable removal of user session instance for ima.
*/
GSTATUS
WSMReleaseUsrSession(
	USR_PSESSION usr_session) 
{
	GSTATUS err = GSTAT_OK;
	
	if (usr_session == NULL)
		return(GSTAT_OK);

	err = DDFSemOpen(&usrSessSemaphore, TRUE);
	if (err == GSTAT_OK)
	{
		if (usr_session->requested_counter > 0)
			usr_session->requested_counter--;

		if (usr_session->timeout_end == 0)
		{
			if (usr_session->requested_counter == 0)
				CLEAR_STATUS(WSMRemoveUsrSession(usr_session));
		}
		else
			err = WSMSetTimeout(usr_session);

		CLEAR_STATUS(DDFSemClose(&usrSessSemaphore));
	}
return(err);
}
Ejemplo n.º 3
0
GSTATUS 
DDSCloseDB (PTR		*cursor) 
{
	GSTATUS err = GSTAT_OK;

	err = DDGClose(&dds_session);

	if (err == GSTAT_OK)
		err = DDGCommit(&dds_session);
	else
		CLEAR_STATUS(DDGRollback(&dds_session));
	CLEAR_STATUS(DDFSemClose(&dds_semaphore));
return(err);
}
Ejemplo n.º 4
0
GSTATUS 
DDSGetDBName(
	u_i4	id, 
	char** name)
{
	GSTATUS err = GSTAT_OK;

	err = DDFSemOpen(&dds_semaphore, FALSE);
	if (err == GSTAT_OK) 
	{
		err = DDSMemGetDBName(id, name);
		CLEAR_STATUS(DDFSemClose(&dds_semaphore));
	}
return(err);
}
Ejemplo n.º 5
0
/*
** Name: WSMRemoveUsrSession() - remove a session from the hashtable and the timeout list.
**
** Description:
**
** Inputs:
**	USR_PSESSION*	: user session 
**
** Outputs:
**
** Returns:
**	GSTATUS	:	GSTAT_OK
**
** Exceptions:
**	None
**
** Side Effects:
**	None
**
** History:
**      03-Jun-1999 (fanra01)
**          Add removal of user session variable semaphore.
*/
GSTATUS 
WSMRemoveUsrSession ( 
    USR_PSESSION    session)
{
    GSTATUS err = GSTAT_OK;
    USR_PSESSION tmp;

    CLEAR_STATUS(WPSCleanFilesTimeout (session->name));

    CLEAR_STATUS(DDFdelhash(
                        usr_sessions,
                        session->name,
                        STlength(session->name),
                        (PTR*) &tmp));

    CLEAR_STATUS(WSMRemoveTimeout(session));

    if (session->requested_counter <= 0)
    {
        while (session->transactions != NULL)
            CLEAR_STATUS( WSMRollback(session->transactions, FALSE) );

        if (session->name != NULL)
            usr_sess_detach(session->name);

        if (session->userid != SYSTEM_ID)
            CLEAR_STATUS(DDSReleaseUser(session->userid));

        err = DDFSemOpen(&session->usrvarsem, TRUE);
        if (err == GSTAT_OK)
        {
            CLEAR_STATUS(WSFCleanVariable(session->vars));
            CLEAR_STATUS(DDFrmhash(&session->vars));
            CLEAR_STATUS(DDFSemClose(&session->usrvarsem));
        }
        CLEAR_STATUS(DDFSemDestroy(&session->usrvarsem));
        MEfreetag(session->mem_tag);
        MEfree((PTR)session);
    }
return(err);
}
Ejemplo n.º 6
0
/*
** Name: WSMRequestUsrSession() - Retrieve a user session from the cookie
**
** Description:
**
** Inputs:
**	char*	: cookie
**
** Outputs:
**	USR_PSESSION*	: user session (NULL if doesn't exist)
**
** Returns:
**	GSTATUS	:	GSTAT_OK
**
** Exceptions:
**	None
**
** Side Effects:
**	None
**
** History:
**      04-Oct-2001 (fanra01)
**          Add a test for an invalid session or a session that is no longer
**          in the hash table and return an error.
*/
GSTATUS 
WSMRequestUsrSession (
    char         *cookie,
    USR_PSESSION *session)
{
    GSTATUS err = GSTAT_OK;
    u_i4    i = 0;
    USR_PSESSION tmp = NULL;

    if (cookie != NULL && cookie[0] != EOS)
    {
        err = DDFSemOpen(&usrSessSemaphore, TRUE);
        if (err == GSTAT_OK)
        {
            err = DDFgethash(
                    usr_sessions,
                    cookie,
                    STlength(cookie),
                    (PTR*) &tmp);
            /*
            ** If the object is not in the hash table, raise and error.
            */
            if (tmp == NULL)
            {
                err = DDFStatusAlloc( E_WS0011_WSS_NO_OPEN_SESSION );
            }
            if (tmp != NULL &&
                tmp->timeout_end < TMsecs())
                tmp = NULL;

            if (tmp != NULL)
                tmp->requested_counter++;

            CLEAR_STATUS(DDFSemClose(&usrSessSemaphore));
        }
    }

    *session = tmp;
    return(err);
}
Ejemplo n.º 7
0
GSTATUS 
DDSCreateDB (
    char *name,
    char *dbname,
    u_i4 dbuser_id,
    i4 flags,
    char *comment,
    u_i4 *id)
{
    GSTATUS err = GSTAT_OK;

    err = DDFSemOpen(&dds_semaphore, TRUE);
    if (err == GSTAT_OK)
    {
        err = DDSPerformDBId(id);
        if (err == GSTAT_OK)
        {
            err = DDGInsert(
                    &dds_session,
                    DDS_OBJ_DB,
                    "%d%s%s%d%d%s",
                    id,
                    name,
                    dbname,
                    &dbuser_id,
                    &flags,
                    comment);
            if (err == GSTAT_OK)
                err = DDSMemCreateDB( *id, name, dbname, dbuser_id, flags );

            if (err == GSTAT_OK)
                err = DDGCommit(&dds_session);
            else
                CLEAR_STATUS(DDGRollback(&dds_session));
        }
        CLEAR_STATUS(DDFSemClose(&dds_semaphore));
    }
return(err);
}
Ejemplo n.º 8
0
/*
** Name: WSMCleanUserTimeout() - Clean the timeout system
**
** Description:
**
** Inputs:
**
** Outputs:
**
** Returns:
**	GSTATUS	:	GSTAT_OK
**
** Exceptions:
**	None
**
** Side Effects:
**	None
**
** History:
*/
GSTATUS
WSMCleanUserTimeout() 
{
	GSTATUS err = GSTAT_OK;
	USR_PSESSION tmp = oldest;
	USR_PSESSION next;
	i4 limit = TMsecs();

	err = DDFSemOpen(&usrSessSemaphore, TRUE);
	if (err == GSTAT_OK)
	{
		while (tmp != NULL &&
		   tmp->timeout_end < limit)
		{
			next = tmp->timeout_next; 
			CLEAR_STATUS(WSMRemoveUsrSession(tmp));
			tmp = next;
		}
		CLEAR_STATUS(DDFSemClose(&usrSessSemaphore));
	}
return(err);
}
Ejemplo n.º 9
0
GSTATUS 
DDSDeleteDB (
	u_i4 id) 
{
	GSTATUS err = GSTAT_OK;

	err = DDFSemOpen(&dds_semaphore, TRUE);
	if (err == GSTAT_OK) 
	{
		err = DDGDelete(&dds_session, DDS_OBJ_DB, "%d", &id);

		if (err == GSTAT_OK) 
			err = DDSMemDeleteDB(id);

		if (err == GSTAT_OK) 
			err = DDGCommit(&dds_session);
		else 
			CLEAR_STATUS(DDGRollback(&dds_session));

		CLEAR_STATUS(DDFSemClose(&dds_semaphore));
	}
return(err);
}
Ejemplo n.º 10
0
GSTATUS 
DDSRetrieveDB (
	u_i4	id, 
	char	**name, 
	char	**dbname, 
	u_i4	**dbuser_id, 
	i4 	**flags,
	char	**comment) 
{
	GSTATUS err = GSTAT_OK;

	err = DDFSemOpen(&dds_semaphore, TRUE);
	if (err == GSTAT_OK) 
	{
		err = DDGKeySelect(
				&dds_session, 
				DDS_OBJ_DB, 
				"%d%s%s%d%d%s",
				&id,
				name, 
				dbname, 
				dbuser_id, 
				flags, 
				comment);

		if (err == GSTAT_OK)
			err = DDGClose(&dds_session);

		if (err == GSTAT_OK)
			err = DDGCommit(&dds_session);
		else
			CLEAR_STATUS(DDGRollback(&dds_session));

		CLEAR_STATUS(DDFSemClose(&dds_semaphore));
	}
return(err);
}
Ejemplo n.º 11
0
/*
** Name: WSMReleaseActSession() - Clean an active session
**
** Description:
**
** Inputs:
**	ACT_PSESSION* : active session
**
** Outputs:
**	ACT_PSESSION* : active session
**
** Returns:
**	GSTATUS	:	GSTAT_OK
**
** Exceptions:
**	None
**
** Side Effects:
**	None
**
** History:
**      03-Jul-98 (fanra01)
**          Rename wts_sess_detach to act_sess_detach.
**      26-Aug-2003 (fanra01)
**          Removed explicit memory frees which are part of tagged memory
**          free.
*/
GSTATUS 
WSMReleaseActSession(
	ACT_PSESSION	*act_session) 
{
	GSTATUS err = GSTAT_OK;
	ACT_PSESSION session = *act_session;
	if (session != NULL)
	{
		*act_session = NULL;
		if (session->name != NULL)
			act_sess_detach(session->name);

		err = DDFSemOpen(&actSessSemaphore, TRUE);
		if (err == GSTAT_OK)
		{
			if (session->previous != NULL)
				session->previous->next = session->next;
			else
				active_sessions = session->next;

			if (session->next != NULL)
				session->next->previous = session->previous;
			CLEAR_STATUS(DDFSemClose(&actSessSemaphore));
		}

		CLEAR_STATUS( WSMCleanUserTimeout() );
		CLEAR_STATUS( WPSCleanFilesTimeout(NULL) );
		CLEAR_STATUS( DBCleanTimeout() );

		CLEAR_STATUS(WSFCleanVariable(session->vars));
		CLEAR_STATUS (DDFrmhash(&session->vars));
		MEfreetag(session->mem_tag);

		MEfree((PTR)session);
	}
return(err);
}
Ejemplo n.º 12
0
GSTATUS 
DDSUpdateDB (
	u_i4	id, 
	char	*name, 
	char	*dbname, 
	u_i4	dbuser_id, 
	i4 flags,
	char *comment) 
{
	GSTATUS err = GSTAT_OK;

	err = DDFSemOpen(&dds_semaphore, TRUE);
	if (err == GSTAT_OK) 
	{
		err = DDGUpdate(
					&dds_session, 
					DDS_OBJ_DB, 
					"%s%s%d%d%s%d", 
					name, 
					dbname, 
					&dbuser_id, 
					&flags, 
					comment,
					&id);

		if (err == GSTAT_OK)
			err = DDSMemUpdateDB(id, name, dbname, flags, dbuser_id);

		if (err == GSTAT_OK) 
			err = DDGCommit(&dds_session);
		else 
			CLEAR_STATUS(DDGRollback(&dds_session));
		CLEAR_STATUS(DDFSemClose(&dds_semaphore));
	}
return(err);
}
Ejemplo n.º 13
0
GSTATUS 
DDSCloseUserDB (PTR *cursor) 
{
	CLEAR_STATUS(DDFSemClose(&dds_semaphore));
return(GSTAT_OK);
}