int TaoTransportTask::send(TaoMessage& rMsg) { unsigned int type = rMsg.getMsgSubType(); unsigned int cmd = rMsg.getCmd(); if ((TaoMessage::RESPONSE_PROVIDER == type) && (cmd == TaoMessage::SHUTDOWN)) { TaoTransportAgent* pAgent = (TaoTransportAgent *) rMsg.getSocket(); mpTaoListeningTask->shutdownAgent(pAgent); return 0; } // record this transaction in the transaction db rMsg.getMsgID(); mpTransactionCnt->add(); mpTransactionCnt->getRef(); TaoObjHandle remoteServer = rMsg.getMsgQueueHandle(); if (mClientHandle) { ((OsServerTask *) mClientHandle)->postMessage(rMsg); return 1; } else if (remoteServer) { ((OsServerTask *) remoteServer)->postMessage(rMsg); return 1; } // send the msg to the transport, receive the response int sent = 0; TaoTransportAgent* pAgent = (TaoTransportAgent *) rMsg.getSocket(); if (pAgent && !pAgent->isShuttingDown()) { sent = pAgent->send(rMsg); } return sent; }