Revision: 40735
http://brlcad.svn.sourceforge.net/brlcad/?rev=40735&view=rev
Author: davidloman
Date: 2010-09-28 15:01:34 +0000 (Tue, 28 Sep 2010)
Log Message:
-----------
Exposed PkgClient::flush() with Portal::flush() in an attempt to get the writes
working. Added a handshake logic checker in to Portal::handleNetMsg() to
prevent two portals from continually sending RemoteNodenameSetMsgs to
eachother. Removed the pkg_switch table generation from Portal cstr since it is
generated prior to Portal init. Removed some debug statements and added yet
others to support continuing t-shooting.
Modified Paths:
--------------
rt^3/trunk/include/Portal.h
rt^3/trunk/src/libNet/Portal.cxx
Modified: rt^3/trunk/include/Portal.h
===================================================================
--- rt^3/trunk/include/Portal.h 2010-09-28 14:57:41 UTC (rev 40734)
+++ rt^3/trunk/include/Portal.h 2010-09-28 15:01:34 UTC (rev 40735)
@@ -43,6 +43,7 @@
int send(NetMsg* msg);
void sendGSNodeName();
+ int flush();
QString getRemoteNodeName();
bool handleNetMsg(NetMsg* msg);
Modified: rt^3/trunk/src/libNet/Portal.cxx
===================================================================
--- rt^3/trunk/src/libNet/Portal.cxx 2010-09-28 14:57:41 UTC (rev 40734)
+++ rt^3/trunk/src/libNet/Portal.cxx 2010-09-28 15:01:34 UTC (rev 40735)
@@ -35,12 +35,10 @@
this->remoteNodeName = "NotSetYet-" + QUuid::createUuid().toString();
this->pkgClient = client;
- struct pkg_switch table[] = {
- {PKG_MAGIC2, &(Portal::callbackSpringboard), "SpringBoard", this},
- {0,0, (char*)0,0}
- };
+ //set the struct's userdata
+ struct pkg_switch* table = (struct
pkg_switch*)this->pkgClient->getCallBackTable();
+ table[0].pks_user_data = this;
- this->pkgClient->setCallBackTable(table);
this->log = Logger::getInstance();
this->handshakeComplete = false;
}
@@ -53,7 +51,20 @@
int
Portal::send(NetMsg* msg){
QByteArray* ba = msg->serialize();
+
+ QString s("Sending msg. Type: ");
+ s.append(QString::number(msg->getMsgType()));
+ s.append(" len: ");
+ s.append(QString::number(ba->size()));
+ log->logDEBUG("Portal", s);
+
int retval = this->pkgClient->send(PKG_MAGIC2, ba->data(), ba->size());
+
+ s="Sent ";
+ s.append(QString::number(retval));
+ s.append(" bytes.");
+ log->logDEBUG("Portal", s);
+
delete ba;
return retval;
}
@@ -74,14 +85,19 @@
}
int
+Portal::flush(){
+ return this->pkgClient->flush();
+}
+int
Portal::read(){
+ Logger::getInstance()->logDEBUG("Portal", "Portal::read()!!!!");
int retval = 0;
//recv first
retval = this->pkgClient->processData();
if (retval < 0){
- this->log->logERROR("Portal", "Unable to process packets? Weird.\n");
+ this->log->logERROR("Portal", "Unable to process packets? Weird. (1)
\n");
return retval;
}//TODO do we need to check for ==0 ?
@@ -98,7 +114,7 @@
retval = this->pkgClient->processData();
if (retval < 0){
- this->log->logERROR("Portal", "Unable to process packets? Weird.\n");
+ this->log->logERROR("Portal", "Unable to process packets? Weird.
(2)\n");
return retval;
}//TODO do we need to check for ==0 ?
@@ -116,14 +132,20 @@
quint16 type = msg->getMsgType();
if (type == GS_REMOTE_NODENAME_SET) {
- RemoteNodenameSetMsg* t = (RemoteNodenameSetMsg*)msg;
- this->remoteNodeName = t->getRemoteNodename();
- this->handshakeComplete = true;
+ if (this->handshakeComplete) {
+ this->log->logDEBUG("Portal", "Recv-ed a
RemoteNodename, but that is already set!");
+ } else {
+ RemoteNodenameSetMsg* t = (RemoteNodenameSetMsg*)msg;
+ this->remoteNodeName = t->getRemoteNodename();
+ this->handshakeComplete = true;
- QString s("Recv-ed a RemoteNodename: ");
- s.append(this->remoteNodeName );
- this->log->logDEBUG("Portal", s);
+ QString s("Recv-ed a RemoteNodename: ");
+ s.append(this->remoteNodeName );
+ this->log->logDEBUG("Portal", s);
+ //reply
+ this->sendGSNodeName();
+ }
delete msg;
return true;
}
@@ -134,8 +156,6 @@
void
Portal::callbackSpringboard(struct pkg_conn* conn, char* buf)
{
- Logger::getInstance()->logBANNER("Portal","TEST!!!");
-
/* Check to see if we got a good Buffer and Portal Object */
if (buf == 0) {
bu_bomb("pkg callback returned a NULL buffer!\n");
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits