Exemplo n.º 1
0
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;
      }
    }
  }
}
Exemplo n.º 2
0
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();
}