Session logon and logoutIn order to perform any database operations, it is necessary to logon to a c-tree session. A session is terminated with a session logout. To log on to a session a session handle must be allocated with ctdbAllocSession() and then ctdbLogon() is called to perform the session logon. CTHANDLE hSession = ctdbAllocSession(CTSESSION_CTDB); if (!hSession) FatalError(“Session handle allocation failed\n”); if (ctdbLogon(hSession, "FAIRCOMS", "ADMIN", "ADMIN") != CTDBRET_OK) FatalError(“Session logon failed\n”); The parameters for the ctdbLogon() function are the same as for the ctdbCreateSession(). If the session dictionary doesn't exist and the session type is CTSESSION_CTDB or CTSESSION_SQL, ctdbLogon() function will fail returning error FNOP_ERR (12), indicating that c-treeDB could not locate the session dictionary file. Tip: A useful sequence in code is to try to log on to the session, and if it fails with error FNOP_ERR (12), create the session dictionary and then log on again. CTSESSION hSession; hSession = ctdbAllocSession(CTSESSION_CTDB); if (!hSession) FatalError(“Session handle allocation failed\n”); if (ctdbLogon(hSession, “FAIRCOMS”, “ADMIN”, “ADMIN”) == FNOP_ERR) {
if (ctdbCreateSession(hSession, “FAIRCOMS”, “ADMIN”, “ADMIN”)!= CTDBRET_OK) FatalError(“Error creating session dictionary file\n”); if (ctdbLogon(hSession, “FAIRCOMS”, “ADMIN”, “ADMIN”) != CTDBRET_OK) FatalError(“Session logon failed\n”); } When operations with the session are no longer needed, it is necessary to logout from the session by calling ctdbLogout(). CTHANDLE hSession; hSession = ctdbAllocSession(CTSESSION_CTDB); if (!hSession) FatalError(“Session handle allocation failed\n”); if (ctdbLogon(hSession, "FAIRCOMS", "ADMIN", "ADMIN") != CTDBRET_OK) FatalError(“Session logon failed\n”); /* perform some other operations on databases and tables */ if (ctdbLogout(hSession) != CTDBRET_OK) FatalError(“Session logout failed\n”); ctdbFreeSession(hSession); |
|||