远程初始化

与远程 AE 有关的初始化功能。

他们习惯于
  • 创建连接点。
  • 使用该连接点进行监听。
  • 接受数据连接 API 句柄或接受 AE 环境。

数据结构

结构 NZAECONPT_HANDLE
ConnectionPoint句柄。 用于连接点 AE 功能的不透明句柄。
结构 NZAEREMPROT_HANDLE
远程协议句柄。 用于远程协议 AE 功能的不透明句柄。
结构NzaeremprotInitialization
初始化远程 AE 通知连接。

类型定义

NzaeRemprotCallback
回调类型定义。

函数

NzaeRemprotRcCode nzaeRemprotAcceptApi(NZAEREMPROT_HANDLEhandle,NzaeApi*result)
从连接点返回 AE API 句柄。
NzaeRemprotRcCode nzaeRemprotAcceptApiWithTimeout(NZAEREMPROT_HANDLEhandle, inttimeoutMilliseconds, NzaeApi*result)
从连接点返回 AE API 句柄。
NzaeRemprotRcCode nzaeRemprotAcceptEnvironment(NZAEREMPROT_HANDLEhandle, NZAEENV_HANDLE *result)
返回连接点的 AE 环境。
NzaeRemprotRcCode nzaeRemprotAcceptEnvironmentWithTimeout(NZAEREMPROT_HANDLEhandle, inttimeoutMilliseconds,NZAEENV_HANDLE *result)
返回连接点的 AE 环境。
voidnzaeRemprotClose(NZAEREMPROT_HANDLEhandle)
关闭监听器
NzaeRemprotRcCode nzaeRemprotCreateListener(NzaeremprotInitialization*args)
在连接点上创建新的监听器。
voidnzaeRemprotFreeResources(NZAEREMPROT_HANDLEhandle)
在不关闭底层通信连接的情况下释放句柄和内存等资源。
int 'nzaeRemprotGetAcceptSocket(NZAEREMPROT_HANDLE句柄
返回用于接受 Remprot 命令的套接字。
NzaeRemprotCallback nzaeRemprotGetCallback(NZAEREMPROT_HANDLEhandle, void**userContext)
获取远程协议回调。 远程协议处理程序用于处理停止和状态等远程命令。
NzaeApiTypes nzaeRemprotGetEnvironmentApiType(NZAEENV_HANDLE hEnv)
从环境中获取 API 类型。
char*nzaeRemprotGetLastErrorText(NZAEREMPROT_HANDLEhandle)
获取最后一个错误的文本。
int32_t nzaeRemprotGetRemoteDataSliceId()
从环境中获取远程名称。
int32_t nzaeRemprotGetRemoteSessionId()
从环境中获取远程会话 ID。
int64_t nzaeRemprotGetRemoteTransactionId()
从环境中获取远程事务 ID。
intnzaeRemprotIsError(NZAEREMPROT_HANDLEhandle)
如果发生错误,则返回 TRUE;如果没有发生错误,则返回 FALSE。
voidnzaeRemprotSetCallback(NZAEREMPROT_HANDLEhandle,NzaeRemprotCallbackcall-back, void*userContext)
设置远程协议回调。 远程协议处理程序用于处理停止和状态等远程命令。
NzaeRemprotRcCode nzaeRemprotWaitForPingOrStop(NZAEREMPROT_HANDLE handle, int *bStopCommand)
等待 ping 或停止。

枚举

枚举NzaeRemprotCmd { NZAE_REMPROT_CMD_REQUEST, NZAE_REMPROT_CMD_PING, NZAE_REMPROT_CMD_STATUS, NZAE_REMPROT_CMD_STOP, NZAE_REMPROT_CMD_CON-TROL_DATA, NZAE_REMPROT_CMD_SIGNAL }
远程 AE 信息。 用户回调函数只接收 NZAE_REMPROT_CMD_STATUS、NZAE_REMPROT_CMD_STOP、NZAE_REMPROT_CMD_SIGNAL 和 NZAE_REMPROT_CMD_CONTROL_DATA。
enumNzaeRemprotRcCode { NZAEREMPROT_RC_ERROR= -1, NZAEREMPROT_RC_NORMAL= 0, NZAEREMPROT_RC_TIMEOUT= 1 }
远程协议返回代码。

详细说明

与远程 AE 有关的初始化功能。 他们习惯于
  • 创建连接点。
  • 使用该连接点进行监听。
  • 接受数据连接 API 句柄或接受 AE 环境。

类型文件

typedef int(*NzaeRemprotCallback)(void*userContext,int code, intdataLen,const char *data,NzaeRemprotCallbackResult*result)
回调类型定义。
参数:
  • userContext

    任何用户应用程序特定数据。 可为 NULL。

  • code

    收到的远程信息(NZAE_REMPROT_CMD_STATUS、NZAE_REMPROT_CMD_STOP、NZAE_REMPROT_CMD_SIGNAL、NZAE_REMPROT_CMD_CONTROL_DATA)。

  • dataLen

    参数数据长度。 可能为 0。

  • data

    参数数据。 可为 NULL。

  • result

    用于放置回调函数结果的结构。

    成功时返回 0,出错时返回-1。

功能文档

NzaeRemprotRcCode nzaeRemprotAcceptApi(NZAEREMPROT_HANDLEhandle,NzaeApi*result)
从连接点返回 AE API 句柄。
参数:
  • handle

    远程协议句柄。

  • NzaeApi result

    接受的应用程序接口。

    退货

    NzaeRemprotRcCode

    返回代码。

    调用者拥有返回句柄的所有权。 无限期等待。

NzaeRemprotRcCode nzaeRemprotAcceptApiWithTimeout(NZAEREMPROT_HANDLEhandle, inttimeoutMilliseconds, NzaeApi*result)
从连接点返回 AE API 句柄。
参数:
  • handle

    远程协议句柄。

  • NzaeApi result

    接受的应用程序接口。

  • timeoutMilliseconds

    超时(毫秒)。

    退货

    NzaeRemprotRcCode

    返回代码。

    调用者拥有返回句柄的所有权。 在给定的毫秒数内等待连接。

NzaeRemprotRcCode nzaeRemprotAcceptEnvironment(NZAEREMPROT_HANDLEhandle, NZAEENV_HANDLE *result)
返回连接点的 AE 环境。
参数:
  • handle

    远程协议句柄。

  • result

    已接受的环境句柄。

    退货

    NzaeRemprotRcCode

    返回代码。

    调用者拥有返回句柄的所有权。 无限期等待。

NzaeRemprotRcCode nzaeRemprotAcceptEnvironmentWith-Timeout(NZAEREMPROT_HANDLE handle, inttimeoutMilliseconds,NZAEENV_HANDLE *result)
返回连接点的 AE 环境。
参数:
  • handle

    远程协议句柄。

  • result

    已接受的环境句柄。

  • timeoutMilliseconds

    超时(毫秒)。

    退货

    NzaeRemprotRcCode

    返回代码。

    调用者拥有返回句柄的所有权。 在给定的毫秒数内等待连接。

voidnzaeRemprotClose(NZAEREMPROT_HANDLEhandle)
关闭监听器
参数:
  • handle

    远程协议句柄。

NzaeRemprotRcCode nzaeRemprotCreateListener(NzaeremprotInitialization*args)
在连接点上创建新的监听器。
参数:
  • NzaeremprotInitialization args

    资本化的论据。

    退货

    NzaeRemprotRcCode

    返回代码。

voidnzaeRemprotFreeResources(NZAEREMPROT_HANDLEhandle)
在不关闭底层通信连接的情况下释放句柄和内存等资源。
参数:
  • handle

    远程协议句柄。

    通常由从远程 AE 父进程分叉出来的子进程调用。 请注意,nzaeRemprotFreeResources和nzaeRemprotClose绝不在同一进程中调用。 nzaeRemprotClose通常在远程 AE 中调用。
intnzaeRemprotGetAcceptSocket(NZAEREMPROT_HANDLEhandle)
返回用于接受 Remprot 命令的套接字。
参数:
  • handle

    远程协议句柄。

    退货

    遥控插座

    一旦被识别,该套接字就可以使用Linux的选择或轮询功能。

NzaeRemprotCallback nzaeRemprotGetCallback(NZAEREMPROT_HANDLEhandle, void**userContext)
获取远程协议回调。 远程协议处理程序用于处理停止和状态等远程命令。
参数:
  • handle

    远程协议句柄。

  • userContext

    返回给 callback 的参数。

    退货

    NzaeRemprotCallback

    回调。

NzaeApiTypes nzaeRemprotGetEnvironmentApiType(NZAEENV_HANDLE hEnv)
从环境中获取 API 类型。
参数:
  • hEnv

    处理环境问题。

    退货

    NzaeApiTypes

    API 类型。

char*nzaeRemprotGetLastErrorText(NZAEREMPROT_HANDLEhandle)
从环境中获取 API 类型。
参数:
  • handle

    远程协议句柄。

    退货

    最后出现的错误的信息文本。

int32_t nzaeRemprotGetRemoteDataSliceId
从环境中获取远程数据片 ID。
退货

远程数据片 ID。

设置是否使用 AE 发射器。 如果未找到数据片 ID,则返回-1。

const char*nzaeRemprotGetRemoteName()
从环境中获取远程名称。
退货

远程数据片 ID。

远程名称。

设置是否使用 AE 发射器。 如果未找到名称,则返回 NULL。

int32_t nzaeRemprotGetRemoteSessionId()
从环境中获取远程会话 ID。
退货

远程会话 ID。

设置是否使用 AE 发射器。 如果未找到会话 ID,则返回-1。

int64_t nzaeRemprotGetRemoteTransactionId()
从环境中获取远程事务 ID。
退货

远程会话 ID。

设置是否使用 AE 发射器。 如果未找到会话 ID,则返回-1。

intnzaeRemprotIsError(NZAEREMPROT_HANDLEhandle)
如果发生错误,则返回 TRUE;如果没有发生错误,则返回 FALSE。
参数:
  • handle

    远程协议句柄。

    退货

    如果发生错误,则为 TRUE。

voidnzaeRemprotSetCallback(NZAEREMPROT_HANDLEhandle,NzaeRemprotCallbackcallback, void*userContext)
设置远程协议回调。 远程协议处理程序用于处理停止和状态等远程命令。
参数:
  • handle

    远程协议句柄。

  • NzaeRemprotCallback callback

    回调函数。

  • userContext

    回调的参数。

NzaeRemprotRcCode nzaeRemprotWaitForPingOrStop(NZAEREMPROT_HANDLE handle, int *bStop-Command)
等待 ping 或停止。
参数:
  • handle

    远程协议句柄。

  • bStopCommand

    返回布尔值的指针,表示 AE 是否停止。

    退货

    NzaeRemprotRcCode

    返回代码。

    在正常的数据驱动远程 AE 中不使用该功能。 接受 AE API 和 AE 环境默认服务 ping 和停止请求的代码。

    因此,该功能只能在作为控制程序使用的启动远程 AE 中使用,而不能作为真正的数据 AE 使用。 启动的远程 AE 在执行时会调用一次该函数,以满足Netezza系统 AE 启动器的要求。

    您可以用以下两种方法之一来处理后续的 ping 和停止:

    使用专用线程调用nzaeRemprotWaitForPingOrStop命令,而函数则无限期等待,直到收到信息或被中断。 当函数处于等待状态时,如果被信号中断,即使没有重新收到 ping 或停止信息,也会返回。

    在 AE 远程协议(remprot)接受套接字文件描述符上使用 select() 或 poll() C 函数调用,检查是否有适当超时的待执行操作。 如果检测到待执行的操作,则调用nzaeRemprotWaitForPingOrStop命令,该命令不会阻塞,并应立即返回一个布尔值。 如果通过选择或轮询没有检测到待执行的操作,则执行常规操作,并跳过对nzaeRemprotWaitForPingOrStop调用。 然后,整个过程将重复进行。

    使用该功能时,请注意竞赛条件。

    如果收到停止请求,则bStopCommand的值为 "true",否则为 "false"。

枚举类型文件

枚举NzaeRemprotCmd
远程 AE 信息。 用户回调函数只接收 NZAE_REMPROT_CMD_STATUS、NZAE_REMPROT_CMD_STOP、NZAE_REMPROT_CMD_SIGNAL 和 NZAE_REMPROT_CMD_CONTROL_DATA。
nzae_remprot_cmd_request
nzae_remprot_cmd_ping
nzae_remprot_cmd_status
查询远程 AE 的状态。 状态数据可重新返回。
nzae_remprot_cmd_stop
远程 AE 正在停止。
nzae_remprot_cmd_control_data
远程 AE 正在发送控制数据。 可返回数据。
nzae_remprot_cmd_signal
远程 AE 已收到支持的信号。
枚举NzaeRemprotRcCode
远程协议返回代码。
nzaeremprot_rc_error
nzaeremprot_rc_normal
nzaeremprot_rc_timeout