starting Win32 port

This commit is contained in:
Matej Sekoranja
2013-11-20 16:14:42 +01:00
parent 308105a212
commit 949bed230e
21 changed files with 153 additions and 62 deletions

View File

@@ -5,9 +5,10 @@
*/
#include <pv/logger.h>
#include <pv/caChannel.h>
#include <pv/standardField.h>
#include <pv/caChannel.h>
using namespace epics::pvData;
using namespace epics::pvAccess;
using namespace epics::pvAccess::ca;

View File

@@ -4,16 +4,19 @@
* in file LICENSE that is included with this distribution.
*/
#include <pv/logger.h>
#include <pv/caProvider.h>
#include <pv/caChannel.h>
#include <algorithm>
/* for CA */
#include <cadef.h>
#include <epicsSignal.h>
#include <pv/logger.h>
#define epicsExportSharedSymbols
#include <pv/caProvider.h>
#include <pv/caChannel.h>
using namespace epics::pvData;
using namespace epics::pvAccess;
using namespace epics::pvAccess::ca;

View File

@@ -10,11 +10,13 @@
#include <pv/pvAccess.h>
#include <map>
#include <shareLib.h>
namespace epics {
namespace pvAccess {
namespace ca {
class CAChannelProvider :
class epicsShareClass CAChannelProvider :
public ChannelProvider,
public std::tr1::enable_shared_from_this<CAChannelProvider>
{
@@ -68,7 +70,7 @@ private:
};
class CAClientFactory
class epicsShareClass CAClientFactory
{
public:
static void start();

View File

@@ -4,6 +4,7 @@
* in file LICENSE that is included with this distribution.
*/
#define epicsExportSharedSymbols
#include <pv/pvAccess.h>
namespace epics {

View File

@@ -6,14 +6,29 @@
#ifndef PVACCESS_H
#define PVACCESS_H
#include <vector>
#ifdef epicsExportSharedSymbols
# define pvAccessEpicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include <pv/pvData.h>
#include <pv/status.h>
#include <pv/destroyable.h>
#include <pv/monitor.h>
#include <pv/pvaVersion.h>
#include <vector>
#include <pv/bitSet.h>
#ifdef pvAccessEpicsExportSharedSymbols
# define epicsExportSharedSymbols
# undef pvAccessEpicsExportSharedSymbols
#endif
#include <pv/pvaVersion.h>
#include <shareLib.h>
namespace epics {
namespace pvAccess {
@@ -38,7 +53,7 @@ namespace pvAccess {
/**
*
*/
class Lockable
class epicsShareClass Lockable
{
public:
POINTER_DEFINITIONS(Lockable);
@@ -52,7 +67,7 @@ namespace pvAccess {
/**
* Scope lock.
*/
class ScopedLock : private epics::pvData::NoDefaultMethods {
class epicsShareClass ScopedLock : private epics::pvData::NoDefaultMethods {
public:
explicit ScopedLock(Lockable::shared_pointer const & li)
@@ -95,7 +110,7 @@ namespace pvAccess {
/**
* Base interface for all channel requests.
*/
class ChannelRequest : public epics::pvData::Destroyable, public Lockable, private epics::pvData::NoDefaultMethods {
class epicsShareClass ChannelRequest : public epics::pvData::Destroyable, public Lockable, private epics::pvData::NoDefaultMethods {
public:
POINTER_DEFINITIONS(ChannelRequest);
};
@@ -104,7 +119,7 @@ namespace pvAccess {
* Request to put and get Array Data.
* The data is either taken from or put in the PVArray returned by ChannelArrayRequester.channelArrayConnect.
*/
class ChannelArray : public ChannelRequest{
class epicsShareClass ChannelArray : public ChannelRequest{
public:
POINTER_DEFINITIONS(ChannelArray);
@@ -136,7 +151,7 @@ namespace pvAccess {
/**
* The epics::pvData::Requester for a ChannelArray.
*/
class ChannelArrayRequester : virtual public epics::pvData::Requester {
class epicsShareClass ChannelArrayRequester : virtual public epics::pvData::Requester {
public:
POINTER_DEFINITIONS(ChannelArrayRequester);
@@ -174,7 +189,7 @@ namespace pvAccess {
/**
*
*/
class ChannelFind : public epics::pvData::Destroyable, private epics::pvData::NoDefaultMethods {
class epicsShareClass ChannelFind : public epics::pvData::Destroyable, private epics::pvData::NoDefaultMethods {
public:
POINTER_DEFINITIONS(ChannelFind);
@@ -185,7 +200,7 @@ namespace pvAccess {
/**
*
*/
class ChannelFindRequester {
class epicsShareClass ChannelFindRequester {
public:
POINTER_DEFINITIONS(ChannelFindRequester);
@@ -200,7 +215,7 @@ namespace pvAccess {
/**
* Request to get data from a channel.
*/
class ChannelGet : public ChannelRequest {
class epicsShareClass ChannelGet : public ChannelRequest {
public:
POINTER_DEFINITIONS(ChannelGet);
@@ -217,7 +232,7 @@ namespace pvAccess {
/**
* epics::pvData::Requester for channelGet.
*/
class ChannelGetRequester : virtual public epics::pvData::Requester {
class epicsShareClass ChannelGetRequester : virtual public epics::pvData::Requester {
public:
POINTER_DEFINITIONS(ChannelGetRequester);
@@ -242,7 +257,7 @@ namespace pvAccess {
/**
* ChannelProcess - request that a channel be processed..
*/
class ChannelProcess : public ChannelRequest {
class epicsShareClass ChannelProcess : public ChannelRequest {
public:
POINTER_DEFINITIONS(ChannelProcess);
@@ -259,7 +274,7 @@ namespace pvAccess {
/**
* epics::pvData::Requester for channelProcess.
*/
class ChannelProcessRequester : virtual public epics::pvData::Requester {
class epicsShareClass ChannelProcessRequester : virtual public epics::pvData::Requester {
public:
POINTER_DEFINITIONS(ChannelProcessRequester);
@@ -282,7 +297,7 @@ namespace pvAccess {
/**
* Interface for a channel access put request.
*/
class ChannelPut : public ChannelRequest {
class epicsShareClass ChannelPut : public ChannelRequest {
public:
POINTER_DEFINITIONS(ChannelPut);
@@ -304,7 +319,7 @@ namespace pvAccess {
/**
* epics::pvData::Requester for ChannelPut.
*/
class ChannelPutRequester : virtual public epics::pvData::Requester {
class epicsShareClass ChannelPutRequester : virtual public epics::pvData::Requester {
public:
POINTER_DEFINITIONS(ChannelPutRequester);
@@ -336,7 +351,7 @@ namespace pvAccess {
* Channel access put/get request.
* The put is performed first, followed optionally by a process request, and then by a get request.
*/
class ChannelPutGet : public ChannelRequest {
class epicsShareClass ChannelPutGet : public ChannelRequest {
public:
POINTER_DEFINITIONS(ChannelPutGet);
@@ -363,7 +378,7 @@ namespace pvAccess {
/**
* epics::pvData::Requester for ChannelPutGet.
*/
class ChannelPutGetRequester : virtual public epics::pvData::Requester
class epicsShareClass ChannelPutGetRequester : virtual public epics::pvData::Requester
{
public:
POINTER_DEFINITIONS(ChannelPutGetRequester);
@@ -400,7 +415,7 @@ namespace pvAccess {
/**
* epics::pvData::Requester for channelGet.
*/
class ChannelRPC : public ChannelRequest {
class epicsShareClass ChannelRPC : public ChannelRequest {
public:
POINTER_DEFINITIONS(ChannelRPC);
@@ -417,7 +432,7 @@ namespace pvAccess {
/**
* epics::pvData::Requester for channelGet.
*/
class ChannelRPCRequester : virtual public epics::pvData::Requester {
class epicsShareClass ChannelRPCRequester : virtual public epics::pvData::Requester {
public:
POINTER_DEFINITIONS(ChannelRPCRequester);
@@ -440,7 +455,7 @@ namespace pvAccess {
/**
* epics::pvData::Requester for a getStructure request.
*/
class GetFieldRequester : virtual public epics::pvData::Requester {
class epicsShareClass GetFieldRequester : virtual public epics::pvData::Requester {
public:
POINTER_DEFINITIONS(GetFieldRequester);
@@ -460,7 +475,7 @@ namespace pvAccess {
* Interface for accessing a channel.
* A channel is created via a call to ChannelAccess.createChannel(String channelName).
*/
class Channel :
class epicsShareClass Channel :
public epics::pvData::Requester,
public epics::pvData::Destroyable,
private epics::pvData::NoDefaultMethods {
@@ -634,7 +649,7 @@ namespace pvAccess {
/**
* Listener for connect state changes.
*/
class ChannelRequester : public virtual epics::pvData::Requester {
class epicsShareClass ChannelRequester : public virtual epics::pvData::Requester {
public:
POINTER_DEFINITIONS(ChannelRequester);
@@ -664,7 +679,7 @@ namespace pvAccess {
* Interface implemented by code that can provide access to the record
* to which a channel connects.
*/
class ChannelProvider : public epics::pvData::Destroyable, private epics::pvData::NoDefaultMethods {
class epicsShareClass ChannelProvider : public epics::pvData::Destroyable, private epics::pvData::NoDefaultMethods {
public:
POINTER_DEFINITIONS(ChannelProvider);
@@ -726,7 +741,7 @@ namespace pvAccess {
/**
* <code>ChanneProvider</code> factory interface.
*/
class ChannelProviderFactory : private epics::pvData::NoDefaultMethods {
class epicsShareClass ChannelProviderFactory : private epics::pvData::NoDefaultMethods {
public:
POINTER_DEFINITIONS(ChannelProviderFactory);
@@ -754,7 +769,7 @@ namespace pvAccess {
/**
* Interface for locating channel providers.
*/
class ChannelAccess : private epics::pvData::NoDefaultMethods {
class epicsShareClass ChannelAccess : private epics::pvData::NoDefaultMethods {
public:
POINTER_DEFINITIONS(ChannelAccess);
@@ -783,9 +798,9 @@ namespace pvAccess {
virtual std::auto_ptr<stringVector_t> getProviderNames() = 0;
};
extern ChannelAccess::shared_pointer getChannelAccess();
extern void registerChannelProviderFactory(ChannelProviderFactory::shared_pointer const & channelProviderFactory);
extern void unregisterChannelProviderFactory(ChannelProviderFactory::shared_pointer const & channelProviderFactory);
epicsShareExtern ChannelAccess::shared_pointer getChannelAccess();
epicsShareExtern void registerChannelProviderFactory(ChannelProviderFactory::shared_pointer const & channelProviderFactory);
epicsShareExtern void unregisterChannelProviderFactory(ChannelProviderFactory::shared_pointer const & channelProviderFactory);
/**
* Interface for creating request structure.

View File

@@ -4,14 +4,17 @@
* in file LICENSE that is included with this distribution.
*/
#include <pv/lock.h>
#include <pv/noDefaultMethods.h>
#include <pv/pvAccess.h>
#include <pv/pvData.h>
#include <pv/factory.h>
#include <map>
#include <vector>
#include <pv/lock.h>
#include <pv/noDefaultMethods.h>
#include <pv/pvData.h>
#define epicsExportSharedSymbols
#include <pv/pvAccess.h>
#include <pv/factory.h>
using namespace epics::pvData;
namespace epics {

View File

@@ -6,15 +6,16 @@
#include <string>
#include <sstream>
#include <pv/pvData.h>
#include <pv/lock.h>
#define epicsExportSharedSymbols
#include <pv/pvAccess.h>
using namespace epics::pvData;
using std::tr1::static_pointer_cast;
namespace epics {
namespace pvAccess {

View File

@@ -4,14 +4,15 @@
* in file LICENSE that is included with this distribution.
*/
#include <pv/clientFactory.h>
#include <pv/clientContextImpl.h>
#include <pv/lock.h>
#include <pv/logger.h>
#include <epicsSignal.h>
#define epicsExportSharedSymbols
#include <pv/clientFactory.h>
#include <pv/clientContextImpl.h>
using namespace epics::pvData;
using namespace epics::pvAccess;

View File

@@ -7,10 +7,12 @@
#ifndef CLIENTFACTORY_H
#define CLIENTFACTORY_H
#include <shareLib.h>
namespace epics {
namespace pvAccess {
class ClientFactory {
class epicsShareClass ClientFactory {
public:
static void start();
static void stop();

View File

@@ -7,8 +7,18 @@
#ifndef PVACONSTANTS_H_
#define PVACONSTANTS_H_
#ifdef epicsExportSharedSymbols
# define pvaConstantsepicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include <pv/pvType.h>
#ifdef pvaConstantsepicsExportSharedSymbols
# define epicsExportSharedSymbols
# undef pvaConstantsepicsExportSharedSymbols
#endif
namespace epics {
namespace pvAccess {

View File

@@ -6,6 +6,7 @@
#include <sstream>
#define epicsExportSharedSymbols
#include <pv/pvaVersion.h>
using std::stringstream;

View File

@@ -7,9 +7,21 @@
#ifndef VERSION_H_
#define VERSION_H_
#ifdef epicsExportSharedSymbols
# define pvaVersionEpicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include <pv/pvType.h>
#include <pv/noDefaultMethods.h>
#ifdef pvaVersionEpicsExportSharedSymbols
# define epicsExportSharedSymbols
# undef pvaVersionEpicsExportSharedSymbols
#endif
#include <shareLib.h>
// module version
// TODO to be generated, etc.
#define EPICS_PVA_MAJOR_VERSION 3
@@ -20,7 +32,7 @@
namespace epics {
namespace pvAccess {
class Version : public epics::pvData::NoDefaultMethods {
class epicsShareClass Version : public epics::pvData::NoDefaultMethods {
public:
/**
* Default constructor.
@@ -104,7 +116,7 @@ namespace pvAccess {
bool _developmentFlag;
};
std::ostream& operator<<(std::ostream& o, const Version& v);
epicsShareExtern std::ostream& operator<<(std::ostream& o, const Version& v);
}
}

View File

@@ -533,7 +533,7 @@ namespace pvAccess {
_socketBuffer->align(alignment);
}
bool BlockingTCPTransport::directSerialize(ByteBuffer */*existingBuffer*/, const char* toSerialize,
bool BlockingTCPTransport::directSerialize(ByteBuffer* /*existingBuffer*/, const char* toSerialize,
std::size_t elementCount, std::size_t elementSize)
{
// TODO overflow check, size_t type, other is int32 for payloadSize header field !!!

View File

@@ -133,13 +133,13 @@ namespace epics {
_receiveBuffer->align(alignment);
}
virtual bool directSerialize(epics::pvData::ByteBuffer */*existingBuffer*/, const char* /*toSerialize*/,
virtual bool directSerialize(epics::pvData::ByteBuffer* /*existingBuffer*/, const char* /*toSerialize*/,
std::size_t /*elementCount*/, std::size_t /*elementSize*/)
{
return false;
}
virtual bool directDeserialize(epics::pvData::ByteBuffer */*existingBuffer*/, char* /*deserializeTo*/,
virtual bool directDeserialize(epics::pvData::ByteBuffer* /*existingBuffer*/, char* /*deserializeTo*/,
std::size_t /*elementCount*/, std::size_t /*elementSize*/)
{
return false;

View File

@@ -32,7 +32,7 @@ public:
// no cache
field->serialize(buffer, this);
}
virtual bool directSerialize(epics::pvData::ByteBuffer */*existingBuffer*/, const char* /*toSerialize*/,
virtual bool directSerialize(epics::pvData::ByteBuffer* /*existingBuffer*/, const char* /*toSerialize*/,
std::size_t /*elementCount*/, std::size_t /*elementSize*/)
{
return false;

View File

@@ -13,6 +13,8 @@
#include <pv/channelSearchManager.h>
#include <pv/inetAddressUtil.h>
#include <shareLib.h>
class ChannelSearchManager;
namespace epics {
@@ -115,7 +117,7 @@ namespace epics {
virtual void poll() = 0;
};
extern ClientContextImpl::shared_pointer createClientContextImpl();
epicsShareExtern ClientContextImpl::shared_pointer createClientContextImpl();
}
}

View File

@@ -9,10 +9,11 @@
#include <pv/pvData.h>
#include <pv/convert.h>
#include <pv/event.h>
#define epicsExportSharedSymbols
#include <pv/pvAccess.h>
#include <pv/clientFactory.h>
#include <pv/event.h>
#include <pv/logger.h>
#include <pv/rpcService.h>

View File

@@ -9,8 +9,17 @@
#include <string>
#ifdef epicsExportSharedSymbols
# define rpcClientEpicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include <pv/pvData.h>
#ifdef rpcClientEpicsExportSharedSymbols
# define epicsExportSharedSymbols
# undef rpcClientEpicsExportSharedSymbols
#endif
#include <shareLib.h>
namespace epics
{
@@ -21,7 +30,7 @@ namespace pvAccess
* RPCClient is an interface class that is used by a service client.
*
*/
class RPCClient
class epicsShareClass RPCClient
{
public:
POINTER_DEFINITIONS(RPCClient);

View File

@@ -5,11 +5,12 @@
*/
#include <stdexcept>
#define epicsExportSharedSymbols
#include <pv/rpcServer.h>
using namespace epics::pvData;
namespace epics { namespace pvAccess {

View File

@@ -7,15 +7,27 @@
#ifndef RPCSERVER_H
#define RPCSERVER_H
#include <pv/sharedPtr.h>
#include <pv/pvAccess.h>
#ifdef epicsExportSharedSymbols
# define rpcServerEpicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include <pv/sharedPtr.h>
#ifdef rpcServerEpicsExportSharedSymbols
# define epicsExportSharedSymbols
# undef rpcServerEpicsExportSharedSymbols
#endif
#include <pv/pvAccess.h>
#include <pv/rpcService.h>
#include <pv/serverContext.h>
#include <shareLib.h>
namespace epics { namespace pvAccess {
class RPCServer {
class epicsShareClass RPCServer {
private:
ServerContextImpl::shared_pointer m_serverContext;

View File

@@ -8,13 +8,27 @@
#define RPCSERVICE_H
#include <stdexcept>
#ifdef epicsExportSharedSymbols
# define rpcServiceEpicsExportSharedSymbols
# undef epicsExportSharedSymbols
#endif
#include <pv/sharedPtr.h>
#include <pv/pvAccess.h>
#include <pv/status.h>
#ifdef rpcServiceEpicsExportSharedSymbols
# define epicsExportSharedSymbols
# undef rpcServiceEpicsExportSharedSymbols
#endif
#include <pv/pvAccess.h>
#include <shareLib.h>
namespace epics { namespace pvAccess {
class RPCRequestException : public std::runtime_error {
class epicsShareClass RPCRequestException : public std::runtime_error {
public:
RPCRequestException(epics::pvData::Status::StatusType status, epics::pvData::String const & message) :
@@ -31,7 +45,7 @@ private:
};
class RPCService {
class epicsShareClass RPCService {
public:
POINTER_DEFINITIONS(RPCService);