more responses

This commit is contained in:
Matej Sekoranja
2011-01-12 14:30:05 +01:00
parent f72e495a99
commit 9416f887ad
4 changed files with 165 additions and 70 deletions

View File

@@ -5,15 +5,18 @@
#include "beaconHandler.h"
using namespace std;
using namespace epics::pvData;
using namespace epics::pvAccess;
namespace epics { namespace pvAccess {
BeaconHandler::BeaconHandler(const ClientContextImpl* context, const osiSockAddr* responseFrom): _context(context), _responseFrom(responseFrom), _mutex(Mutex())
BeaconHandler::BeaconHandler(ClientContextImpl* context, const osiSockAddr* responseFrom): _context(context), _responseFrom(*responseFrom), _mutex(Mutex()), _serverStartupTime(TimeStamp(0))
{
}
BeaconHandler::BeaconHandler(const osiSockAddr* responseFrom): _responseFrom(responseFrom), _mutex(Mutex())
BeaconHandler::BeaconHandler(const osiSockAddr* responseFrom):
_responseFrom(*responseFrom), _mutex(Mutex()), _serverStartupTime(TimeStamp(0))
{
}
@@ -24,7 +27,7 @@ BeaconHandler::~BeaconHandler()
}
void BeaconHandler::beaconNotify(osiSockAddr* from, int8 remoteTransportRevision,
int64 timestamp, TimeStamp* startupTime, int32 sequentalID,
TimeStamp* timestamp, TimeStamp* startupTime, int16 sequentalID,
PVFieldPtr data)
{
bool networkChanged = updateBeacon(remoteTransportRevision, timestamp, startupTime, sequentalID);
@@ -34,18 +37,17 @@ void BeaconHandler::beaconNotify(osiSockAddr* from, int8 remoteTransportRevision
}
}
bool BeaconHandler::updateBeacon(int8 remoteTransportRevision, int64 timestamp,
TimeStamp* startupTime, int32 sequentalID)
bool BeaconHandler::updateBeacon(int8 remoteTransportRevision, TimeStamp* timestamp,
TimeStamp* startupTime, int16 sequentalID)
{
Lock guard(&_mutex);
// first beacon notification check
if (_serverStartupTime == NULL)
if (_serverStartupTime.getSecondsPastEpoch() == 0)
{
_serverStartupTime = startupTime;
_serverStartupTime = *startupTime;
// new server up..
//TODO
//_context->beaconAnomalyNotify();
_context->beaconAnomalyNotify();
// notify corresponding transport(s)
beaconArrivalNotify();
@@ -53,11 +55,10 @@ bool BeaconHandler::updateBeacon(int8 remoteTransportRevision, int64 timestamp,
return false;
}
bool networkChange = !(*_serverStartupTime == *startupTime);
bool networkChange = !(_serverStartupTime == *startupTime);
if (networkChange)
{
//TODO
//_context->beaconAnomalyNotify();
_context->beaconAnomalyNotify();
}
else
{
@@ -71,8 +72,7 @@ void BeaconHandler::beaconArrivalNotify()
{
int32 size = 0;
//TODO TCP name must be get from somewhere not hardcoded
//TODO
Transport** transports = NULL;//_context->getTransportRegistry().get("TCP", _responseFrom, size);
Transport** transports = _context->getTransportRegistry()->get("TCP", &_responseFrom, size);
if (transports == NULL)
{
return;
@@ -90,8 +90,7 @@ void BeaconHandler::changedTransport()
{
int32 size = 0;
//TODO TCP name must be get from somewhere not hardcoded
//TODO
Transport** transports = NULL;//_context->getTransportRegistry().get("TCP", _responseFrom, size);
Transport** transports = _context->getTransportRegistry()->get("TCP", &_responseFrom, size);
if (transports == NULL)
{
return;