ServerChannelRequesterImpl::getRequesterName() returns client's address
This commit is contained in:
@@ -633,8 +633,11 @@ namespace pvAccess {
|
||||
// virtual ChannelProvider::shared_pointer getProvider() = 0;
|
||||
|
||||
/**
|
||||
* Returns the channel's remote address, e.g. "/192.168.1.101:5064" or "#C0 S1".
|
||||
* @return the channel's remote address.
|
||||
* Returns the channel's remote address, signal name, etc...
|
||||
* For example:
|
||||
* - client side channel would return server's address, e.g. "/192.168.1.101:5064"
|
||||
* - server side channel would return underlying bus address, e.g. "#C0 S1".
|
||||
* @return the channel's address.
|
||||
**/
|
||||
virtual std::string getRemoteAddress() = 0;
|
||||
|
||||
|
||||
@@ -760,7 +760,7 @@ ChannelRequester::shared_pointer ServerChannelRequesterImpl::create(
|
||||
std::tr1::shared_ptr<ServerChannelRequesterImpl> tp(new ServerChannelRequesterImpl(transport, channelName, cid, css));
|
||||
ChannelRequester::shared_pointer cr = tp;
|
||||
// TODO exception guard and report error back
|
||||
provider->createChannel(channelName, cr, transport->getPriority(), transport->getRemoteName());
|
||||
provider->createChannel(channelName, cr, transport->getPriority());
|
||||
return cr;
|
||||
}
|
||||
|
||||
@@ -872,9 +872,11 @@ void ServerChannelRequesterImpl::channelStateChange(Channel::shared_pointer cons
|
||||
|
||||
string ServerChannelRequesterImpl::getRequesterName()
|
||||
{
|
||||
std::stringstream name;
|
||||
name << "ServerChannelRequesterImpl/" << _channelName << "[" << _cid << "]";
|
||||
return name.str();
|
||||
Transport::shared_pointer transport = _transport.lock();
|
||||
if (transport)
|
||||
return transport->getRemoteName();
|
||||
else
|
||||
return "<unknown>:0";
|
||||
}
|
||||
|
||||
void ServerChannelRequesterImpl::message(std::string const & message, MessageType messageType)
|
||||
@@ -943,7 +945,7 @@ void ServerDestroyChannelHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
ChannelHostingTransport::shared_pointer casTransport = dynamic_pointer_cast<ChannelHostingTransport>(transport);
|
||||
|
||||
|
||||
transport->ensureData(2*sizeof(int32)/sizeof(int8));
|
||||
transport->ensureData(8);
|
||||
const pvAccessID sid = payloadBuffer->getInt();
|
||||
const pvAccessID cid = payloadBuffer->getInt();
|
||||
|
||||
|
||||
@@ -2649,28 +2649,38 @@ public:
|
||||
short /*priority*/,
|
||||
std::string const & address)
|
||||
{
|
||||
// this is a server instance provider, address holds remote socket IP
|
||||
if (channelName == "testCounter")
|
||||
if (address == "local")
|
||||
{
|
||||
channelRequester->channelCreated(Status::Ok, m_counterChannel);
|
||||
return m_counterChannel;
|
||||
}
|
||||
else if (channelName == "testADC")
|
||||
{
|
||||
channelRequester->channelCreated(Status::Ok, m_adcChannel);
|
||||
return m_adcChannel;
|
||||
}
|
||||
else if (channelName == "testMP")
|
||||
{
|
||||
channelRequester->channelCreated(Status::Ok, m_mpChannel);
|
||||
return m_mpChannel;
|
||||
// this is a server instance provider, address holds remote socket IP
|
||||
if (channelName == "testCounter")
|
||||
{
|
||||
channelRequester->channelCreated(Status::Ok, m_counterChannel);
|
||||
return m_counterChannel;
|
||||
}
|
||||
else if (channelName == "testADC")
|
||||
{
|
||||
channelRequester->channelCreated(Status::Ok, m_adcChannel);
|
||||
return m_adcChannel;
|
||||
}
|
||||
else if (channelName == "testMP")
|
||||
{
|
||||
channelRequester->channelCreated(Status::Ok, m_mpChannel);
|
||||
return m_mpChannel;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChannelProvider::shared_pointer chProviderPtr = shared_from_this();
|
||||
Channel::shared_pointer channel = MockChannel::create(chProviderPtr, channelRequester, channelName, address);
|
||||
channelRequester->channelCreated(Status::Ok, channel);
|
||||
return channel;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ChannelProvider::shared_pointer chProviderPtr = shared_from_this();
|
||||
Channel::shared_pointer channel = MockChannel::create(chProviderPtr, channelRequester, channelName, address);
|
||||
channelRequester->channelCreated(Status::Ok, channel);
|
||||
return channel;
|
||||
Channel::shared_pointer nullPtr;
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, "only local supported");
|
||||
channelRequester->channelCreated(errorStatus, nullPtr);
|
||||
return nullPtr;
|
||||
}
|
||||
}
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user