#include <nmlqr.hh>
Collaboration diagram for NML_QR_CLIENT:

Public Methods | |
| NML_QR_CLIENT (NML_FORMAT_PTR f_ptr, char *qr_name, char *process_name, char *config_file) | |
| ~NML_QR_CLIENT () | |
| int | sendQuery (NML_QUERY_MSG *) |
| NMLTYPE | readReply () |
| NMLTYPE | waitForReply (double timeout) |
| NMLmsg * | getReplyAddress () |
| int | valid () |
| int | reset () |
Protected Attributes | |
| NML * | replyChannel |
| NML_QUERY_CHANNEL * | queryChannel |
| NML_ID_CHANNEL * | idChannel |
| int | reply_subdiv |
|
||||||||||||||||||||
|
Definition at line 353 of file nmlqr.cc. 00355 {
00356 queryChannel = NULL;
00357 replyChannel = NULL;
00358 idChannel = NULL;
00359 reply_subdiv = -1;
00360
00361 char repbufname[40];
00362 sprintf (repbufname, "%sReply", qr_name);
00363 char querybufname[40];
00364 sprintf (querybufname, "%sQuery", qr_name);
00365 char idbufname[40];
00366 sprintf (idbufname, "%sID", qr_name);
00367 idChannel =
00368 new NML_ID_CHANNEL (f_ptr, idbufname, process_name, config_file);
00369 queryChannel =
00370 new NML_QUERY_CHANNEL (f_ptr, querybufname, process_name, config_file);
00371 replyChannel = new NML (f_ptr, repbufname, process_name, config_file);
00372
00373 if (idChannel->valid () && queryChannel->valid ())
00374 {
00375 ID_REQUEST reqMsg;
00376 queryChannel->write (reqMsg);
00377 esleep (0.05);
00378 while (!idChannel->read ())
00379 {
00380 esleep (0.05);
00381 }
00382 ID_REPLY *idReply = (ID_REPLY *) idChannel->get_address ();
00383 if (idReply->type == ID_REPLY_TYPE)
00384 {
00385 reply_subdiv = idReply->subdiv;
00386 }
00387 }
00388 }
|
|
|
Definition at line 390 of file nmlqr.cc. 00391 {
00392 if (NULL != queryChannel)
00393 {
00394 if (reply_subdiv >= 0)
00395 {
00396 ID_DELETE idDeleteMsg;
00397 idDeleteMsg.subdiv_for_reply = reply_subdiv;
00398 idDeleteMsg.subdiv = reply_subdiv;
00399 queryChannel->write (&idDeleteMsg);
00400 esleep (0.05);
00401 }
00402 delete queryChannel;
00403 queryChannel = NULL;
00404 }
00405 if (NULL != idChannel)
00406 {
00407 delete idChannel;
00408 idChannel = NULL;
00409 }
00410 if (NULL != replyChannel)
00411 {
00412 delete replyChannel;
00413 replyChannel = NULL;
00414 }
00415 }
|
|
|
Definition at line 418 of file nmlqr.cc. 00419 {
00420 if (NULL == queryChannel)
00421 {
00422 return -1;
00423 }
00424 qMsg->subdiv_for_reply = reply_subdiv;
00425 return queryChannel->write (qMsg);
00426 }
|
|
|
Definition at line 430 of file nmlqr.cc. 00431 {
00432 if (NULL == replyChannel || reply_subdiv < 0)
00433 {
00434 return -1;
00435 }
00436 return replyChannel->read_subdivision (reply_subdiv);
00437 }
|
|
|
Definition at line 441 of file nmlqr.cc. 00442 {
00443 if (NULL == replyChannel || reply_subdiv < 0)
00444 {
00445 return -1;
00446 }
00447 return replyChannel->blocking_read_subdivision (reply_subdiv, timeout);
00448 }
|
|
|
Definition at line 451 of file nmlqr.cc. 00452 {
00453 if (NULL == replyChannel || reply_subdiv < 0)
00454 {
00455 return NULL;
00456 }
00457 return replyChannel->get_address_subdivision (reply_subdiv);
00458 }
|
|
|
Definition at line 462 of file nmlqr.cc. Referenced by reset().
|
|
|
Definition at line 484 of file nmlqr.cc. 00485 {
00486 if (!idChannel->valid ())
00487 {
00488 idChannel->reset ();
00489 }
00490 if (!queryChannel->valid ())
00491 {
00492 queryChannel->reset ();
00493 }
00494 if (!replyChannel->valid ())
00495 {
00496 replyChannel->reset ();
00497 }
00498 if (idChannel->valid () && queryChannel->valid () && reply_subdiv < 0)
00499 {
00500 ID_REQUEST reqMsg;
00501 queryChannel->write (reqMsg);
00502 esleep (0.05);
00503 while (!idChannel->read ())
00504 {
00505 esleep (0.05);
00506 }
00507 ID_REPLY *idReply = (ID_REPLY *) idChannel->get_address ();
00508 if (idReply->type == ID_REPLY_TYPE)
00509 {
00510 reply_subdiv = idReply->subdiv;
00511 }
00512 }
00513 return valid ();
00514 }
|
|
|
|
|
|
|
|
|
|
|
|
|
1.2.11.1 written by Dimitri van Heesch,
© 1997-2001