AJA NTV2 SDK  18.1.0.2439
NTV2 SDK 18.1.0.2439
ntv2nubaccess.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef NTV2NUBACCESS_H
9 #define NTV2NUBACCESS_H
10 
11 #include "ntv2utils.h" // NTV2StringList
12 #include "ajabase/system/lock.h" // AJALock
13 #include <string>
14 #include <vector>
15 #include <map>
16 
17 // TYPEDEFs
18 typedef std::pair<NTV2DeviceID, ULWord64> NTV2DeviceIDSerialPair;
19 typedef std::vector<NTV2DeviceIDSerialPair> NTV2DeviceIDSerialPairs;
20 typedef NTV2DeviceIDSerialPairs::iterator NTV2DeviceIDSerialPairsIter;
21 typedef NTV2DeviceIDSerialPairs::const_iterator NTV2DeviceIDSerialPairsConstIter;
22 
23 // Supported NTV2ConnectParams:
24 #define kConnectParamScheme "scheme"
25 #define kConnectParamHost "host"
26 #define kConnectParamPort "port"
27 #define kConnectParamDevIndex "deviceindex"
28 #define kConnectParamDevSerial "deviceserial"
29 #define kConnectParamDevModel "devicemodel"
30 #define kConnectParamDevID "deviceid"
31 #define kConnectParamResource "resourcePath"
32 #define kConnectParamQuery "query"
33 
34 // AJA query params:
35 #define kQParamVerboseLogging "verbose"
36 #define kQParamLogToStdout "stdout"
37 #define kQParamShowX509Cert "showcert"
38 #define kQParamShowParams "showparams"
39 #define kQParamDebugRegistry "debugregistry"
40 #define kQParamNumWorkers "numworkers"
41 
42 // AJA VDEV params:
43 #define kQParamVDevFolderPath "vdevfpath"
44 #define kQParamVDevName "vdevname"
45 #define kQParamVDevFileName "vdevfname"
46 #define kQParamVDevIndex "vdevindex"
47 
48 // AJA VDEV JSON keys:
49 #define kVDevJSON_URLSpec "urlspec"
50 #define kVDevJSON_Disabled "disabled"
51 #define kVDevJSON_SerialNum "serial"
52 #define kVDevJSON_DeviceID "devid"
53 #define kVDevJSON_Name "name"
54 #define kVDevJSON_Plugin "plugin"
55 #define kVDevJSON_Host "host"
56 
57 // Local URL schemes:
58 #define kLegalSchemeNTV2 "ntv2"
59 #define kLegalSchemeNTV2Local "ntv2local"
60 
61 // Exported Function Names:
62 #define kFuncNameCreateClient "CreateClient"
63 #define kFuncNameCreateServer "CreateServer"
64 #define kFuncNameGetRegInfo "GetRegistrationInfo"
65 
66 // Other Info Keys:
67 #define kNTV2PluginInfoKey_PluginsPath "PluginsPath"
68 #define kNTV2PluginInfoKey_PluginPath "PluginPath"
69 #define kNTV2PluginInfoKey_PluginSigPath "PluginSigPath"
70 #define kNTV2PluginInfoKey_PluginBaseName "PluginBaseName"
71 #define kNTV2PluginInfoKey_Fingerprint "serial number"
72 #define kNTV2PluginInfoKey_Errors "errors"
73 
74 // Plugin Registration Info Keys:
75 #define kNTV2PluginRegInfoKey_Vendor "Vendor"
76 #define kNTV2PluginRegInfoKey_CommonName "CommonName"
77 #define kNTV2PluginRegInfoKey_OrgUnit "OrgUnit"
78 #define kNTV2PluginRegInfoKey_ShortName "ShortName"
79 #define kNTV2PluginRegInfoKey_LongName "LongName"
80 #define kNTV2PluginRegInfoKey_Description "Description"
81 #define kNTV2PluginRegInfoKey_Copyright "Copyright"
82 #define kNTV2PluginRegInfoKey_NTV2SDKVersion "NTV2SDKVersion"
83 #define kNTV2PluginRegInfoKey_Version "Version"
84 #define kNTV2PluginRegInfoKey_CommitSHA "CommitSHA"
85 #define kNTV2PluginRegInfoKey_ReqParams "RequiredParams"
86 #define kNTV2PluginRegInfoKey_OptParams "OptionalParams"
87 
88 // Plugin Signature File Keys:
89 #define kNTV2PluginSigFileKey_X509Certificate "X509Certificate"
90 #define kNTV2PluginSigFileKey_Signature "Signature"
91 
92 // X509 Certificate Attribute Keys:
93 #define kNTV2PluginX500AttrKey_CommonName "CN"
94 #define kNTV2PluginX500AttrKey_LocalityName "L"
95 #define kNTV2PluginX500AttrKey_StateOrProvinceName "ST"
96 #define kNTV2PluginX500AttrKey_OrganizationName "O"
97 #define kNTV2PluginX500AttrKey_OrganizationalUnitName "OU"
98 #define kNTV2PluginX500AttrKey_CountryName "C"
99 
100 extern uint32_t gBaseConstructCount; // Number of NTV2RPCBase constructor calls made
101 extern uint32_t gBaseDestructCount; // Number of NTV2RPCBase destructor calls made
102 extern uint32_t gClientConstructCount; // Number of NTV2RPCClient constructor calls made
103 extern uint32_t gClientDestructCount; // Number of NTV2RPCClient destructor calls made
104 extern uint32_t gServerConstructCount; // Number of NTV2RPCServer constructor calls made
105 extern uint32_t gServerDestructCount; // Number of NTV2RPCServer destructor calls made
106 extern uint32_t gLoaderConstructCount; // Number of NTV2PluginLoader constructor calls made
107 extern uint32_t gLoaderDestructCount; // Number of NTV2PluginLoader destructor calls made
108 extern uint32_t gPluginConstructCount; // Number of NTV2Plugin constructor calls made
109 extern uint32_t gPluginDestructCount; // Number of NTV2Plugin destructor calls made
110 
115 {
116  public:
120  inline size_t size (void) const {return mDict.size();}
122  inline bool empty (void) const {return mDict.empty();}
123  inline bool hasKey (const std::string & inKey) const {return mDict.find(inKey) != mDict.end();}
124  std::string valueForKey (const std::string & inKey) const;
125  uint16_t u16ValueForKey (const std::string & inKey, const uint16_t inDefault = 0) const;
126  NTV2StringSet keys (void) const;
127  size_t largestKeySize (void) const;
128  size_t largestValueSize (void) const;
129  std::ostream & Print (std::ostream & oss, const bool inCompact = true) const;
130  bool serialize (std::string & outStr) const;
131 
136  inline void clear (void) {mDict.clear();}
138  bool insert (const std::string & inKey, const std::string & inValue);
139  inline size_t erase (const std::string & inKey) {return hasKey(inKey) ? mDict.erase(inKey) : 0;}
140  size_t updateFrom (const NTV2Dictionary & inDict);
141  size_t addFrom (const NTV2Dictionary & inDict);
142  bool deserialize (const std::string & inStr);
143  #if !defined(NTV2_DEPRECATE_17_1)
144  inline NTV2_DEPRECATED_f(size_t UpdateFrom (const NTV2Dictionary & inDict)) {return updateFrom(inDict);}
145  inline NTV2_DEPRECATED_f(size_t AddFrom (const NTV2Dictionary & inDict)) {return addFrom(inDict);}
146  #endif // !defined(NTV2_DEPRECATE_17_1)
147 
149  public:
150  typedef std::map<std::string, std::string> Dict;
151  typedef Dict::const_iterator DictConstIter;
152  inline size_t initializeFrom (const Dict & inDict) {mDict = inDict; return size();}
153 
154  private:
155  Dict mDict;
156 }; // NTV2Dictionary
157 
161 typedef std::pair<std::string, std::string> NTV2DictionaryEntry, NTV2DictEntry, NTV2ConnectParam;
162 
163 inline std::ostream & operator << (std::ostream & oss, const NTV2Dictionary & inDict) {return inDict.Print(oss);}
164 
172 {
173  public:
174  NTV2DeviceSpecParser (const std::string inSpec = "");
175  void Reset (const std::string inSpec = "");
176  inline const std::string & DeviceSpec (void) const {return mSpec;}
177  std::string MakeDeviceSpec (const bool urlEncodeQuery) const;
178  std::string MakeQueryString (const bool urlEncode) const;
179  inline bool HasDeviceSpec (void) const {return !DeviceSpec().empty();}
180  inline bool Successful (void) const {return !Failed();}
181  inline bool Failed (void) const {return DeviceSpec().empty() ? true : HasErrors();}
182  inline bool HasScheme (void) const {return HasResult(kConnectParamScheme);}
183  inline std::string Scheme (void) const {return Result(kConnectParamScheme);}
184  inline bool IsLocalDevice (void) const {return Scheme() == kLegalSchemeNTV2Local || Scheme() == kLegalSchemeNTV2;}
185  inline size_t ErrorCount (void) const {return mErrors.size();}
186  inline bool HasErrors (void) const {return ErrorCount() > 0;}
187  inline std::string Error (const size_t inIndex = 0) const {if (inIndex < mErrors.size()) return mErrors.at(inIndex); return "";}
188  inline NTV2StringList Errors (void) const {return mErrors;}
189  inline NTV2ConnectParams Results (void) const {return mResult;}
190  inline bool HasResult (const std::string & inKey) const {return mResult.hasKey(inKey);}
191  inline std::string Result (const std::string & inKey) const {return mResult.valueForKey(inKey);}
192  std::string Resource (const bool inStripLeadSlash = true) const;
193  inline std::string Host (void) const {return Result(kConnectParamHost);}
194  inline std::string Port (void) const {return Result(kConnectParamPort);}
195  std::string HostWithPort (void) const;
196  std::ostream & PrintErrors (std::ostream & oss) const;
197  std::ostream & Print (std::ostream & oss, const bool inDumpResults = false) const;
198  std::string InfoString (void) const;
199  std::string DeviceSerial (void) const {return Result(kConnectParamDevSerial);}
200  inline std::string DeviceModel (void) const {return Result(kConnectParamDevModel);}
201  NTV2DeviceID DeviceID (void) const;
202  UWord DeviceIndex (void) const;
203  inline const NTV2Dictionary & QueryParams (void) const {return mQueryParams;}
204  inline std::string QueryParam (const std::string & inKey) const {return mQueryParams.valueForKey(inKey);}
205  inline bool HasQueryParams (void) const {return !QueryParams().empty();}
206  #if defined(_DEBUG)
207  static void test (void);
208  #endif // defined(_DEBUG)
209 
210  private:
211  void Parse (void);
212  bool ParseHexNumber (size_t & pos, std::string & outToken);
213  bool ParseDecNumber (size_t & pos, std::string & outToken);
214  bool ParseAlphaNum (size_t & pos, std::string & outToken, const std::string & inOtherChars = ""); // Starts with letter followed by run of letters and/or digits and/or other chars
215  bool ParseAlphaNumeric (size_t & pos, std::string & outToken, const std::string & inOtherChars = ""); // A run of letters and/or decimal digits and/or other chars
216  bool ParseScheme (size_t & pos, std::string & outToken); // An alphanumeric name followed by "://"
217  bool ParseSerialNum (size_t & pos, std::string & outToken); // An 8 or 9 character alphanumeric name or a 64-bit hex number
218  bool ParseDeviceID (size_t & pos, std::string & outToken); // An 32-bit hex number that matches a known NTV2DeviceID
219  bool ParseModelName (size_t & pos, std::string & outToken); // An alphanumeric name that matches a known device model name
220  bool ParseDNSName (size_t & pos, std::string & outDNSName); // A domain name: one or more alphanumeric names separated with '.'
221  bool ParseIPv4Address (size_t & pos, std::string & outIPv4); // Exactly four decimal numbers, each no greater than 255, separated with '.'
222  bool ParseHostAddressAndPortNumber (size_t & pos, std::string & outAddr, std::string & outPort); // A host name or IPv4 address with an optional port number
223  bool ParseResourcePath (size_t & pos, std::string & outRsrc); // One or more '/'-separated alphanumeric names
224  bool ParseParamAssignment (size_t & pos, std::string & outKey, std::string & outValue); // An alphanumeric key optionally followed by '=' optionally followed by URL-encoded value string
225  bool ParseQuery (size_t & pos, NTV2Dictionary & outParams); // Starts with '?' one or more '&'-separated param assignments
226  inline int LargestResultKey (void) const {return int(mResult.largestKeySize());}
227  inline int LargestResultValue (void) const {return int(mResult.largestValueSize());}
228  inline char CharAt (const size_t inPos) {return inPos < mSpec.length() ? mSpec.at(inPos) : 0;}
229  inline size_t SpecLength (void) const {return mSpec.length();}
230  inline size_t CurrentPosition (void) const {return mPos;}
231  inline void AddError (const std::string & inError) {mErrors.push_back(inError);}
232  static bool IsUpperLetter (const char inChar);
233  static bool IsLowerLetter (const char inChar);
234  static bool IsLetter (const char inChar, const bool inIncludeUnderscore = false);
235  static bool IsDecimalDigit (const char inChar);
236  static bool IsHexDigit (const char inChar);
237  static bool IsLegalSerialNumChar (const char inChar);
238 
239  private:
240  std::string mSpec;
241  NTV2StringList mErrors;
242  NTV2ConnectParams mResult;
243  NTV2Dictionary mQueryParams;
244  size_t mPos;
245 
246  public: // Class Methods
259  static bool ParseQueryParams (const NTV2Dictionary & inSrcDict, NTV2Dictionary & outQueryParams);
260 
272  static bool MakeQueryString (const NTV2Dictionary & inSrcDict, std::string & outQueryStr, const bool inLeadQuestion = false);
273 }; // NTV2DeviceSpecParser
274 
275 
280 {
281  public:
282  static std::string ShortSDKVersion (void);
283  static std::string AJAFingerprint (const bool inLowerCase = false, const bool inStripColons = false);
284 
285  protected:
286  NTV2RPCBase (NTV2Dictionary params, uint32_t * pRefCon);
287  virtual ~NTV2RPCBase ();
288  bool SetParams (const NTV2ConfigParams & inNewParams, const bool inAugment = false);
289 
290  protected:
292  mutable AJALock mParamLock;
293  uint32_t * mpRefCon;
294 }; // NTV2RPCBase
295 
296 
310 {
311  public:
317  static NTV2RPCClientAPI * CreateClient (NTV2ConnectParams & inParams);
318 
319  public:
323  virtual std::string HostName (void) const {return ConnectParam(kConnectParamHost);}
325  virtual std::string Name (void) const {return "";}
326  virtual std::string Description (void) const;
327  virtual std::ostream & Print (std::ostream & oss) const;
329 
333  virtual bool NTV2Connect (void);
335  virtual bool NTV2Disconnect (void);
336  virtual bool IsConnected (void) const {return false;}
337 
342  virtual NTV2ConnectParams ConnectParams (void) const;
344  virtual bool HasConnectParam (const std::string & inParam) const;
345  virtual std::string ConnectParam (const std::string & inParam) const;
346  virtual bool ConnectHasScheme (void) const;
347  virtual inline bool SetConnectParams (const NTV2ConnectParams & inNewParams, const bool inAugment = false) {return !IsConnected() && SetParams(inNewParams, inAugment);}
348 
353  virtual bool NTV2ReadRegisterRemote (const ULWord regNum, ULWord & outRegValue, const ULWord regMask, const ULWord regShift);
355  virtual bool NTV2WriteRegisterRemote (const ULWord regNum, const ULWord regValue, const ULWord regMask, const ULWord regShift);
356  virtual bool NTV2AutoCirculateRemote (AUTOCIRCULATE_DATA & autoCircData);
357  virtual bool NTV2WaitForInterruptRemote (const INTERRUPT_ENUMS eInterrupt, const ULWord timeOutMs);
358  virtual bool NTV2DMATransferRemote (const NTV2DMAEngine inDMAEngine, const bool inIsRead,
359  const ULWord inFrameNumber, NTV2Buffer & inOutBuffer,
360  const ULWord inCardOffsetBytes, const ULWord inNumSegments,
361  const ULWord inSegmentHostPitch, const ULWord inSegmentCardPitch,
362  const bool inSynchronous);
363  virtual bool NTV2MessageRemote (NTV2_HEADER * pInMessage);
365 
369  virtual bool NTV2GetBoolParamRemote (const ULWord inParamID, ULWord & outValue); // New in SDK 17.0
371  virtual bool NTV2GetNumericParamRemote (const ULWord inParamID, ULWord & outValue); // New in SDK 17.0
372  virtual bool NTV2GetSupportedRemote (const ULWord inEnumsID, ULWordSet & outSupported); // New in SDK 17.0
374 
389  virtual bool NTV2QueryDevices (NTV2StringList & outDeviceInfos, std::string & outErrMsg)
390  {
391  outErrMsg.clear();
392  outDeviceInfos.clear();
393  return true;
394  }
395 
396  #if !defined(NTV2_DEPRECATE_16_3) // These functions are going away
397  virtual NTV2_DEPRECATED_16_3(bool NTV2DriverGetBitFileInformationRemote(BITFILE_INFO_STRUCT & nfo, const NTV2BitFileType typ));
398  virtual NTV2_DEPRECATED_16_3(bool NTV2DriverGetBuildInformationRemote(BUILD_INFO_STRUCT & buildInfo));
399  virtual NTV2_DEPRECATED_16_3(bool NTV2DownloadTestPatternRemote(const NTV2Channel ch, const NTV2PixelFormat pf, const UWord msk, const bool dma, const ULWord tpNum));
400  virtual NTV2_DEPRECATED_16_3(bool NTV2ReadRegisterMultiRemote(const ULWord numRegs, ULWord & outFailedRegNum, NTV2RegInfo outRegs[]));
401  virtual NTV2_DEPRECATED_16_3(bool NTV2GetDriverVersionRemote(ULWord & vers));
402  #endif // !defined(NTV2_DEPRECATE_16_3)
403 
404  virtual ~NTV2RPCClientAPI();
405 
406  protected:
407  NTV2RPCClientAPI (NTV2ConnectParams inParams, void * pRefCon);
408 
409  virtual bool NTV2OpenRemote (void);
410  virtual bool NTV2CloseRemote (void);
411 
412  protected:
413  uint32_t mSpare[1024];
414 }; // NTV2RPCClientAPI
415 
417 
418 inline std::ostream & operator << (std::ostream & oss, const NTV2RPCClientAPI & inObj) {return inObj.Print(oss);}
419 
425 {
426  public:
434  static NTV2RPCServerAPI * CreateServer (NTV2ConfigParams & inParams);
435 
444  static NTV2RPCServerAPI * CreateServer (const std::string & inURL);
445 
446  public:
450  virtual std::ostream & Print (std::ostream & oss) const;
452  virtual inline bool IsRunning (void) const {return mRunning;}
453 
458  virtual NTV2ConfigParams ConfigParams (void) const;
460  virtual bool HasConfigParam (const std::string & inParam) const;
461  virtual std::string ConfigParam (const std::string & inParam) const;
462  virtual inline bool SetConfigParams (const NTV2ConfigParams & inNewParams, const bool inAugment = false) {return SetParams(inNewParams, inAugment);}
463 
468  virtual void RunServer (void);
470  virtual inline void Stop (void) {mTerminate = true;}
471 
473  protected:
474  NTV2RPCServerAPI (NTV2ConnectParams inParams, void * pRefCon);
475  virtual ~NTV2RPCServerAPI();
476 
477  protected:
478  bool mRunning;
479  bool mTerminate;
480  uint32_t mSpare[1024];
481 }; // NTV2RPCServerAPI
482 
483 inline std::ostream & operator << (std::ostream & oss, const NTV2RPCServerAPI & inObj) {return inObj.Print(oss);}
484 
490 extern "C"
491 {
505  typedef bool (*fpGetRegistrationInfo) (const uint32_t /*inHostSDKVers*/, NTV2Dictionary & /*outInfo*/);
506 
514  typedef NTV2RPCClientAPI* (*fpCreateClient) (void * /*pRefCon*/, const NTV2ConnectParams & /*inParams*/, const uint32_t /*inHostSDKVersion*/);
515 
524  typedef NTV2RPCServerAPI* (*fpCreateServer) (void * /*pRefCon*/, const NTV2ConfigParams & /*inParams*/, const uint32_t /*inHostSDKVersion*/);
525 
526  #if !defined(NTV2_DEPRECATE_16_3) // Don't use these functions going forward
527  typedef NTV2RPCAPI* (*fpCreateNTV2SoftwareDevice) (void * /*pInDLLHandle*/, const std::string & /*inQueryStr*/, const uint32_t /*inHostSDKVersion*/);
528  #endif // !defined(NTV2_DEPRECATE_16_3)
529 }
530 
531 #endif // NTV2NUBACCESS_H
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
std::string QueryParam(const std::string &inKey) const
uint32_t gLoaderDestructCount
virtual bool NTV2QueryDevices(NTV2StringList &outDeviceInfos, std::string &outErrMsg)
Queries the devices that are accessible on the remote host.
std::ostream & operator<<(std::ostream &oss, const NTV2Dictionary &inDict)
#define kConnectParamDevSerial
Device with this serial number.
Definition: ntv2nubaccess.h:28
Declares the AJALock class.
NTV2Dictionary NTV2ConfigParams
A dictionary of parameters used to configure an RPC server.
bool(* fpGetRegistrationInfo)(const uint32_t, NTV2Dictionary &)
Obtains a plugin&#39;s registration information. Starting in SDK 17.1, all plugins must implement this fu...
size_t ErrorCount(void) const
uint32_t gServerDestructCount
NTV2FrameBufferFormat
Identifies a particular video frame buffer pixel format. See Device Frame Buffer Formats for details...
Definition: ntv2enums.h:223
#define kConnectParamPort
Port number (optional)
Definition: ntv2nubaccess.h:26
NTV2DeviceIDSerialPairs::const_iterator NTV2DeviceIDSerialPairsConstIter
Definition: ntv2nubaccess.h:21
virtual bool SetConnectParams(const NTV2ConnectParams &inNewParams, const bool inAugment=false)
Replaces or adds to my connect parameters.
size_t size(void) const
const std::string & DeviceSpec(void) const
NTV2Dictionary NTV2Dict
NTV2RPCClientAPI NTV2RPCAPI
bool Failed(void) const
bool HasDeviceSpec(void) const
#define kLegalSchemeNTV2Local
Definition: ntv2nubaccess.h:59
One-stop shop for parsing device specifications. (New in SDK 16.3) I do very little in the way of val...
size_t erase(const std::string &inKey)
Erases the given key and its corresponding value from me, returns 1 if successful, 0 if not.
Definition: lock.h:28
Dict::const_iterator DictConstIter
Common base class for NTV2RPCClientAPI and NTV2RPCServerAPI.
std::string DeviceModel(void) const
uint32_t ULWord
Definition: ajatypes.h:236
NTV2Channel
These enum values are mostly used to identify a specific widget_framestore. They&#39;re also commonly use...
Definition: ntv2enums.h:1361
bool hasKey(const std::string &inKey) const
#define kConnectParamDevModel
First device of this model (e.g. &#39;kona4&#39;)
Definition: ntv2nubaccess.h:29
AJALock mParamLock
Mutex to protect mParams.
virtual std::string Name(void) const
uint32_t gClientDestructCount
NTV2Dictionary mParams
Copy of config params passed to my constructor.
#define kConnectParamHost
DNS name, IPv4 or sw device DLL name.
Definition: ntv2nubaccess.h:25
bool IsLocalDevice(void) const
virtual bool SetConfigParams(const NTV2ConfigParams &inNewParams, const bool inAugment=false)
Replaces or adds to my config parameters.
virtual std::ostream & Print(std::ostream &oss) const
bool HasErrors(void) const
An object that can connect to, and operate remote or fake devices. I have three general API groups: ...
#define true
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
NTV2Dictionary NTV2ConnectParams
A dictionary of parameters used to connect to remote/fake devices.
uint32_t gLoaderConstructCount
bool SetParams(const NTV2ConfigParams &inNewParams, const bool inAugment=false)
virtual void Stop(void)
Call this to request the server to stop.
const NTV2Dictionary & QueryParams(void) const
virtual std::ostream & Print(std::ostream &oss) const
std::string Host(void) const
std::set< std::string > NTV2StringSet
NTV2DMAEngine
Definition: ntv2enums.h:1861
bool HasResult(const std::string &inKey) const
enum _INTERRUPT_ENUMS_ INTERRUPT_ENUMS
std::ostream & Print(std::ostream &oss, const bool inCompact=true) const
Prints human-readable representation to ostream.
bool HasQueryParams(void) const
std::set< ULWord > ULWordSet
A collection of unique ULWord (uint32_t) values.
std::vector< NTV2DeviceIDSerialPair > NTV2DeviceIDSerialPairs
An ordered sequence of NTV2DeviceIDSerialPairs.
Definition: ntv2nubaccess.h:19
#define kLegalSchemeNTV2
Definition: ntv2nubaccess.h:58
All new NTV2 structs start with this common header.
uint32_t gServerConstructCount
std::string Port(void) const
virtual bool IsConnected(void) const
#define NTV2_DEPRECATED_f(__f__)
uint32_t gPluginConstructCount
Base class of objects that can serve device operation RPCs with NTV2RPCClientAPI instances.
NTV2ConnectParams Results(void) const
virtual bool IsRunning(void) const
NTV2BitFileType
Definition: ntv2enums.h:3354
std::string DeviceSerial(void) const
NTV2StringList Errors(void) const
bool mTerminate
Set true to stop server.
Describes a user-space buffer on the host computer. I have an address and a length, plus some optional attributes (allocated by SDK?, page-aligned? etc.).
#define AJAExport
Definition: export.h:33
bool empty(void) const
Declares numerous NTV2 utility functions.
uint32_t * mpRefCon
Reserved for internal use.
std::pair< std::string, std::string > NTV2ConnectParam
A parameter used to connect to remote/fake devices.
#define kConnectParamScheme
URL scheme.
Definition: ntv2nubaccess.h:24
std::pair< std::string, std::string > NTV2DictEntry
uint16_t UWord
Definition: ajatypes.h:234
bool mRunning
Running?
uint32_t gBaseConstructCount
A simple (not thread-safe) set of key/value pairs. (New in SDK 16.3)
#define NTV2_DEPRECATED_16_3(__f__)
size_t initializeFrom(const Dict &inDict)
bool Successful(void) const
std::string Scheme(void) const
std::pair< std::string, std::string > NTV2DictionaryEntry
std::vector< std::string > NTV2StringList
uint32_t gBaseDestructCount
std::map< std::string, std::string > Dict
std::string Result(const std::string &inKey) const
NTV2DeviceIDSerialPairs::iterator NTV2DeviceIDSerialPairsIter
Definition: ntv2nubaccess.h:20
uint32_t gPluginDestructCount
std::string Error(const size_t inIndex=0) const
uint32_t gClientConstructCount
std::pair< NTV2DeviceID, ULWord64 > NTV2DeviceIDSerialPair
Identifies a device by its NTV2DeviceID and serial number.
Definition: ntv2nubaccess.h:18
bool HasScheme(void) const