Product Documentation

FairCom ISAM for C

Previous Topic

Next Topic

ctCallback

Establish a notification callback.

Short Name

ctCallback()

Type

ISAM function.

Declaration

NINT ctCallback(NINT opcode, NINT objhandle, ctCallbackPtr cbptr,

NINT contents, NINT controls)

Description

Instead of passing the notification information to a queue, a server-side SDK can make calls to ctCallback() to associate a callback function to a notification.

ctCallback() is used in the same manner as ctNotify() except that the third parameter is a pointer to a callback function instead of a queue handle.

A notification setup with ctCallback() causes the function pointed to by cbptr to be called (instead of a message written to a queue). This capability is only available with the server SDK, and ctCallback() can only be called from code compiled into the server itself (using the server SDK).

The prototype for the callback function pointer is:

typedef NINT (*ctCallbackPtr)(pVOID msg,NINT msglen,pVOID aux,NINT auxlen);

The callback function returns NO_ERROR on success and a non zero value on failure. Parameter msg and the optional parameter aux are input parameters. If both msg and aux are passed in, then they should be conceptually pasted together to form one long message.

It is important to note that as currently coded, the target file’s header semaphore is held while the callback function is executed. Therefore the callback function cannot introduce pauses or delays or attempt to lock the header of the target file.

Return

Value

Symbolic Constant

Explanation

0

NO_ERROR

Successful close of the queue.

446

BMOD_ERR

Bad mode: parameter out of range.

458

SWRT_ERR

Write permission not granted.

See FairCom DB Error Codes for a complete listing of valid FairCom DB error values.

Example

NINT MyCallBack(pVOID msg, NINT msglen, pVOID aux, NINT auxlen)

{

/* save callback message to disk */

fwrite(msglen, sizeof(msglen), 1, fd);

fwrite(msg, msglen, 1, fd);

}


if (ctCallback(ctNT_ADDREC, datno, MyCallBack, 0, 0) != NO_ERROR)

printf("ctCallback failed\n");

Limitations

Server-side SDK only.

See also

ctNotify

TOCIndex