beaconEmitter and handler (not finished)

This commit is contained in:
Gasper Jansa
2011-01-03 09:58:35 +01:00
parent 95148e2d50
commit 0a43e1104c
12 changed files with 750 additions and 4 deletions
+5
View File
@@ -14,6 +14,11 @@ PROD_HOST += testRemoteClientImpl
testRemoteClientImpl_SRCS += testRemoteClientImpl.cpp
testRemoteClientImpl_LIBS += pvData pvAccess Com
PROD_HOST += testBeaconEmitter
testBeaconEmitter_SRCS += testBeaconEmitter.cpp
testBeaconEmitter_LIBS += pvData pvAccess Com
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE
+71
View File
@@ -0,0 +1,71 @@
/*
* testBeaconEmitter.cpp
*/
#include "remote.h"
#include "blockingUDP.h"
#include "beaconEmitter.h"
#include "inetAddressUtil.h"
#include <osiSock.h>
#include <iostream>
#include <cstdio>
using namespace epics::pvAccess;
using namespace epics::pvData;
class DummyResponseHandler : public ResponseHandler
{
public:
virtual void handleResponse(osiSockAddr* responseFrom,
Transport* transport, int8 version, int8 command, int payloadSize,
ByteBuffer* payloadBuffer)
{
cout << "DummyResponseHandler::handleResponse" << endl;
}
};
void testBeaconEmitter()
{
DummyResponseHandler drh;
/* SOCKET mysocket;
if ((mysocket = socket (AF_INET, SOCK_DGRAM, 0)) == -1)
{
assert(false);
}
InetAddrVector* broadcastAddresses = getBroadcastAddresses(mysocket);*/
InetAddrVector* broadcastAddresses = new InetAddrVector;
osiSockAddr* addr = new osiSockAddr;
addr->ia.sin_family = AF_INET;
addr->ia.sin_port = htons(5067);
if(inet_aton("92.50.75.255",&addr->ia.sin_addr)==0) {
cout<<"error in inet_aton()"<<endl;
return;
}
broadcastAddresses->push_back(addr);
BlockingUDPConnector connector(true, broadcastAddresses, true);
osiSockAddr bindAddr;
bindAddr.ia.sin_family = AF_INET;
bindAddr.ia.sin_port = htons(5066);
bindAddr.ia.sin_addr.s_addr = htonl(INADDR_ANY);
Transport* transport = connector.connect(NULL, &drh, &bindAddr, 1, 50);
cout<<"Sending beacons"<<endl;
BeaconEmitter beaconEmitter(transport, transport->getRemoteAddress());
beaconEmitter.start();
while(1) sleep(1);
delete transport;
}
int main(int argc, char *argv[])
{
testBeaconEmitter();
return (0);
}
+53
View File
@@ -0,0 +1,53 @@
/*
* testBeaconEmitter.cpp
*/
#include "remote.h"
#include "blockingUDP.h"
#include "beaconHandler.h"
#include "inetAddressUtil.h"
#include <osiSock.h>
#include <iostream>
#include <cstdio>
using namespace epics::pvAccess;
using namespace epics::pvData;
class BeaconResponseHandler : public ResponseHandler
{
public:
virtual void handleResponse(osiSockAddr* responseFrom,
Transport* transport, int8 version, int8 command, int payloadSize,
ByteBuffer* payloadBuffer)
{
cout << "DummyResponseHandler::handleResponse" << endl;
}
};
void testBeaconHandler()
{
BeacondResponseHandler brh;
BlockingUDPConnector connector(false, NULL, true);
DummyClientContext context;
osiSockAddr bindAddr;
bindAddr.ia.sin_family = AF_INET;
bindAddr.ia.sin_port = htons(5067);
bindAddr.ia.sin_addr.s_addr = htonl(INADDR_ANY);
Transport* transport = connector.connect(NULL, &brh, &bindAddr, 1, 50);
((BlockingUDPTransport*)transport)->start();
while(1) sleep(1);
delete transport;
}
int main(int argc, char *argv[])
{
testBeaconHandler();
return (0);
}
+2 -1
View File
@@ -412,7 +412,8 @@ void testSerializeStatus()
//TODO why are in and out on the same address?
}
int main(int argc, char *argv[]) {
int main(int argc, char *argv[])
{
pvDataCreate = getPVDataCreate();
statusCreate = getStatusCreate();
fieldCreate = getFieldCreate();
+10
View File
@@ -118,6 +118,16 @@ int main(int argc, char *argv[])
}
assert(registry->numberOfActiveTransports() == 0);
for(int32 i = 0; i < address_max; i++)
{
for(int16 j = 0; j < priority_max; j++)
{
registry->put(static_cast<Transport*>(transportArrayIn[i * priority_max + j]));;
}
}
assert(registry->numberOfActiveTransports() == (priority_max * address_max));
registry->clear();
assert(registry->numberOfActiveTransports() == 0);
for(int32 i = 0; i < address_max; i++)
{