int main(int argc, char *argv[]) { pwr_tStatus sts; char remote_address[40]; char remote_host_name[40]; rpvd_sMsg *msg; rpvd_sMsgAny umsg; rpvd_sMsgAny *rmsg; int udp_port; /* Read arguments */ if ( argc < 3) { usage(); exit(0); } strcpy( remote_address, argv[1]); strcpy( remote_host_name, argv[2]); if ( argc >= 4) { sts = sscanf( argv[3], "%d", &udp_port); if ( sts != 1) { usage(); exit(0); } } else udp_port = 3051; sts = udp_Init( remote_address, remote_host_name, udp_port); if ( EVEN(sts)) { exit(0); } sts = gdh_Init( "remote_pvd_pwrsrv"); if ( EVEN(sts)) return sts; umsg.Type = rpvd_eMsg_NodeUp; umsg.Id = 0; sts = udp_Request( (char *)&umsg, sizeof(umsg), (char **)&rmsg); if ( ODD(sts) && sts != REM__TIMEOUT && ODD(rmsg->Status)) printf( "Link up\n"); for (;;) { sts = udp_Receive( (char **)&msg, 5000); if ( sts == REM__TIMEOUT) { printf( "Alive\n"); } else if ( ODD(sts)) { switch ( msg->Any.Type) { case rpvd_eMsg_Oid: pwrsrv_Oid( &msg->Oid); break; case rpvd_eMsg_ObjectName: pwrsrv_ObjectName( &msg->ObjectName); break; case rpvd_eMsg_ReadAttribute: pwrsrv_ReadAttribute( &msg->ReadAttribute); break; case rpvd_eMsg_WriteAttribute: pwrsrv_WriteAttribute( &msg->WriteAttribute); break; case rpvd_eMsg_SubAdd: pwrsrv_SubAdd( &msg->SubAdd); break; case rpvd_eMsg_SubRemove: pwrsrv_SubRemove( &msg->SubRemove); break; case rpvd_eMsg_SubRequest: pwrsrv_SubSend( &msg->Any); break; case rpvd_eMsg_NodeUp: pwrsrv_NodeUp( &msg->Any); break; } } } }
int main(int argc, char *argv[]) { pwr_tStatus sts; char remote_address[40]; char remote_host_name[40]; char remote_vid[40]; char remote_volume_name[40]; int udp_port; int server_id; /* Read arguments */ if ( argc < 5) { usage(); exit(0); } strcpy( remote_address, argv[1]); strcpy( remote_host_name, argv[2]); strcpy( remote_vid, argv[3]); strcpy( remote_volume_name, argv[4]); if ( argc >= 6) { sts = sscanf( argv[5], "%d", &server_id); if ( sts != 1) { usage(); exit(0); } } else server_id = 200; if ( argc >= 7) { sts = sscanf( argv[6], "%d", &udp_port); if ( sts != 1) { usage(); exit(0); } } else udp_port = 3051; if ( argc >= 8) { sts = sscanf( argv[7], "%d", &rpvd_opsys); if ( sts != 1) { usage(); exit(0); } } else rpvd_opsys = 0; cdh_StringToVolumeId( remote_vid, &rpvd_vid); strcpy( rpvd_vname, remote_volume_name); sts = udp_Init( remote_address, remote_host_name, udp_port); if ( EVEN(sts)) { exit(0); } remote_pvd_pwrcli provider( pvd_eEnv_Rt); rt_procom procom( &provider, errh_eAnix_appl20, // Application index "remote_pvd_pwrcli", // Process name server_id, // Sid rpvd_vid, // Vid rpvd_vname, // Volume name 0); // Global procom.init(); provider.nodeUp(); procom.mainLoop(); }