PQsetNoticeProcessor 控制 libpq 生成的通知和警告信息的汇报.
typedef void (*PQnoticeProcessor) (void *arg, const char *message); PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor proc, void *arg);
缺省时,libpq 在后端往 stderr 上打印“通知”信息和一些它自身生成的错误信息. 这个特性可以通过提供一个对信息进行某种加工的回叫函数来更改. 我们向这个回叫函数传递错误信息的文本(包括文本结尾的换行符), 和一个空(void)指针,该指针与传递给 PQsetNoticeProcessor 的完全一样. (如果需要,这个指针可以用于访问应用相关的状态.)缺省的通知处理器只是简单的
static void defaultNoticeProcessor(void * arg, const char * message) { fprintf(stderr, "%s", message); }要使用特殊的通知处理器,在创建完新的 PGconn 对象后马上调用 PQsetNoticeProcessor。
返回值是指向以前的通知处理器的指针。如果你提供了一个 NULL 做为回调指针, 那么不会发生任何动作,只是返回当前的指针。
一旦你设置了一个通知处理器, 你就应该预料到该函数可能在 PGconn 对象或 PGresult 对象从开始存在时起就可能被调用. 当创建一个 PGresult 时,PGconn 的当前的通知指针被拷贝到 PGresult 里提供给可能需要的过程, 如 PQgetvalue 使用.