#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 } |
|
|
|
|
|
|
|
|