print modes
This commit is contained in:
@@ -155,26 +155,39 @@ void ServerSearchHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
AbstractServerResponseHandler::handleResponse(responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] Search request received.");
|
||||
|
||||
transport->ensureData((sizeof(int32)+sizeof(int16))/sizeof(int8)+1);
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] pos %d", payloadBuffer->getPosition());
|
||||
const int32 searchSequenceId = payloadBuffer->getInt();
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] pos %d", payloadBuffer->getPosition());
|
||||
const int8 qosCode = payloadBuffer->getByte();
|
||||
const int32 count = payloadBuffer->getShort() & 0xFFFF;
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] pos %d", payloadBuffer->getPosition());
|
||||
const int32 count = payloadBuffer->getShort();
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] pos %d", payloadBuffer->getPosition());
|
||||
const bool responseRequired = (QOS_REPLY_REQUIRED & qosCode) != 0;
|
||||
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] Search request received: ID %d count %d.", searchSequenceId, count);
|
||||
|
||||
for (int32 i = 0; i < count; i++)
|
||||
{
|
||||
transport->ensureData(sizeof(int32)/sizeof(int8));
|
||||
const int32 cid = payloadBuffer->getInt();
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] pos %d", payloadBuffer->getPosition());
|
||||
const String name = SerializeHelper::deserializeString(payloadBuffer, transport.get());
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] pos %d", payloadBuffer->getPosition());
|
||||
// no name check here...
|
||||
|
||||
//LOG(logLevelInfo,"[ServerSearchHandler::handleResponse] Search request received for CID %d name '%s'.", cid, name.c_str());
|
||||
|
||||
// TODO object pool!!!
|
||||
int providerCount = _providers.size();
|
||||
|
||||
ServerChannelFindRequesterImpl* pr = new ServerChannelFindRequesterImpl(_context, providerCount);
|
||||
pr->set(name, searchSequenceId, cid, responseFrom, responseRequired);
|
||||
ChannelFindRequester::shared_pointer spr(pr);
|
||||
|
||||
for (int i = 0; i < providerCount; i++)
|
||||
for (int i = 0; i < providerCount; i++)
|
||||
_providers[i]->channelFind(name, spr);
|
||||
}
|
||||
}
|
||||
@@ -237,6 +250,8 @@ void ServerChannelFindRequesterImpl::channelFindResult(const Status& status, Cha
|
||||
ServerSearchHandler::s_channelNameToProvider[_name] = channelFind->getChannelProvider();
|
||||
}
|
||||
|
||||
|
||||
LOG(logLevelInfo,"[ServerChannelFindRequesterImpl::channelFindResult] Channel '%s' was found.", _name.c_str());
|
||||
_wasFound = wasFound;
|
||||
TransportSender::shared_pointer thisSender = shared_from_this();
|
||||
_context->getBroadcastTransport()->enqueueSendRequest(thisSender);
|
||||
@@ -255,6 +270,10 @@ void ServerChannelFindRequesterImpl::unlock()
|
||||
|
||||
void ServerChannelFindRequesterImpl::send(ByteBuffer* buffer, TransportSendControl* control)
|
||||
{
|
||||
char ipAddrStr[48];
|
||||
ipAddrToDottedIP(&_sendTo->ia, ipAddrStr, sizeof(ipAddrStr));
|
||||
LOG(logLevelInfo,"[ServerChannelFindRequesterImpl::send] Sending search response back for %s to %s.", _name.c_str(), ipAddrStr);
|
||||
|
||||
int32 count = 1;
|
||||
control->startMessage((int8)4, (sizeof(int32)+sizeof(int8)+128+2*sizeof(int16)+count*sizeof(int32))/sizeof(int8));
|
||||
|
||||
@@ -1342,7 +1361,7 @@ void ServerMonitorRequesterImpl::send(ByteBuffer* buffer, TransportSendControl*
|
||||
{
|
||||
Monitor::shared_pointer monitor = _channelMonitor;
|
||||
MonitorElement::shared_pointer element = monitor->poll();
|
||||
if (element != NULL)
|
||||
if (element.get())
|
||||
{
|
||||
control->startMessage((int8)CMD_MONITOR, sizeof(int32)/sizeof(int8) + 1);
|
||||
buffer->putInt(_ioid);
|
||||
@@ -1350,7 +1369,7 @@ void ServerMonitorRequesterImpl::send(ByteBuffer* buffer, TransportSendControl*
|
||||
|
||||
// changedBitSet and data, if not notify only (i.e. queueSize == -1)
|
||||
BitSet::shared_pointer changedBitSet = element->changedBitSet;
|
||||
if (changedBitSet != NULL)
|
||||
if (changedBitSet.get())
|
||||
{
|
||||
changedBitSet->serialize(buffer, control);
|
||||
element->pvStructurePtr->serialize(buffer, control, changedBitSet.get());
|
||||
|
||||
+47
-12
@@ -90,7 +90,7 @@ void convertStructure(StringBuilder buffer,PVStructure *data,int notFirst)
|
||||
}
|
||||
}
|
||||
|
||||
void convertArray(StringBuilder buffer,PVScalarArray * pv,int notFirst)
|
||||
void convertArray(StringBuilder buffer,PVScalarArray * pv,int /*notFirst*/)
|
||||
{
|
||||
// array stringification
|
||||
std::stringstream sstream;
|
||||
@@ -391,7 +391,9 @@ void toNTString(std::ostream& o, PVFieldPtr const & pv)
|
||||
|
||||
double timeOut = DEFAULT_TIMEOUT;
|
||||
string request(DEFAULT_REQUEST);
|
||||
bool terseMode = false;
|
||||
|
||||
enum PrintMode { ValueOnlyMode, StructureMode, TerseMode };
|
||||
PrintMode mode = ValueOnlyMode;
|
||||
|
||||
|
||||
void usage (void)
|
||||
@@ -483,8 +485,6 @@ class ChannelGetRequesterImpl : public ChannelGetRequester
|
||||
std::cerr << "[" << m_channelName << "] channel get: " << status.toString() << std::endl;
|
||||
}
|
||||
|
||||
String str;
|
||||
|
||||
// access smart pointers
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
@@ -492,17 +492,51 @@ class ChannelGetRequesterImpl : public ChannelGetRequester
|
||||
// needed since we access the data
|
||||
ScopedLock dataLock(m_channelGet);
|
||||
|
||||
if (terseMode)
|
||||
if (mode == ValueOnlyMode)
|
||||
{
|
||||
PVFieldPtr pvField = m_pvStructure->getSubField("value");
|
||||
if (pvField.get())
|
||||
{
|
||||
PVScalarArrayPtr pvScalarArray = std::tr1::dynamic_pointer_cast<PVScalarArray>(pvField);
|
||||
if (pvScalarArray.get())
|
||||
{
|
||||
size_t len = pvScalarArray->getLength();
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
(pvScalarArray.get())->dumpValue(std::cout, i) << std::endl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << *(pvField.get()) << std::endl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// do a structure mode, as fallback
|
||||
std::cerr << "no 'value' field" << std::endl;
|
||||
String str;
|
||||
m_pvStructure->toString(&str);
|
||||
std::cout << str << std::endl;
|
||||
}
|
||||
}
|
||||
else if (mode == TerseMode)
|
||||
{
|
||||
String str;
|
||||
convertToString(&str, m_pvStructure.get(), 0);
|
||||
else
|
||||
std::cout << str << std::endl;
|
||||
}
|
||||
else //if (mode == StructureMode)
|
||||
{
|
||||
String str;
|
||||
m_pvStructure->toString(&str);
|
||||
std::cout << str << std::endl;
|
||||
}
|
||||
}
|
||||
// this is OK since calle holds also owns it
|
||||
m_channelGet.reset();
|
||||
}
|
||||
|
||||
std::cout << str << std::endl;
|
||||
|
||||
m_event.signal();
|
||||
|
||||
}
|
||||
@@ -659,7 +693,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void channelStateChange(Channel::shared_pointer const & channel, Channel::ConnectionState connectionState)
|
||||
virtual void channelStateChange(Channel::shared_pointer const & /*channel*/, Channel::ConnectionState connectionState)
|
||||
{
|
||||
if (connectionState == Channel::CONNECTED)
|
||||
{
|
||||
@@ -723,10 +757,11 @@ int main (int argc, char *argv[])
|
||||
timeOut = DEFAULT_TIMEOUT;
|
||||
}
|
||||
break;
|
||||
case 'r': /* Set timeout value */
|
||||
case 'r': /* Set pvRequest value */
|
||||
request = optarg;
|
||||
mode = StructureMode;
|
||||
break;
|
||||
case 'p': /* Servie parameters */
|
||||
case 'p': /* Service parameters */
|
||||
{
|
||||
string param = optarg;
|
||||
size_t eqPos = param.find('=');
|
||||
@@ -748,7 +783,7 @@ int main (int argc, char *argv[])
|
||||
serviceRequest = true;
|
||||
break;
|
||||
case 't': /* Terse mode */
|
||||
terseMode = true;
|
||||
mode = TerseMode;
|
||||
break;
|
||||
case 'd': /* Debug log level */
|
||||
debug = true;
|
||||
|
||||
@@ -771,6 +771,24 @@ class MockChannel : public Channel {
|
||||
{
|
||||
pvField->setCapacity(specCount);
|
||||
pvField->setLength(specCount);
|
||||
|
||||
double v = 0;
|
||||
int ix = 0;
|
||||
const int COUNT = 1024;
|
||||
|
||||
int n = 0;
|
||||
while (n < specCount)
|
||||
{
|
||||
|
||||
double array[COUNT];
|
||||
int i = 0;
|
||||
for (; i < COUNT && n < specCount; i++)
|
||||
{
|
||||
array[i] = v; v+=1; n++;
|
||||
}
|
||||
pvField->put(ix, i, array, 0);
|
||||
ix += i;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -797,7 +815,7 @@ class MockChannel : public Channel {
|
||||
pvField->toString(&str);
|
||||
printf("%s\n", str.c_str());
|
||||
printf("=============------------------------------------!!!\n");
|
||||
*/
|
||||
*/
|
||||
}
|
||||
else if (m_name.find("image") == 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user