API changes

From NorduGrid

The following page documents changes in the API of the ARC libraries from one version to another. For documentation on the API see the doxygen documentation.

If no namespace is specified, the ARC namespace should be assumed.

Version 4.0.0 → 4.1.0

libarccommon

* class URL:
  Changed: URL(const std::string&, bool = false)
           URL(const std::string&, bool = false, int = -1, const std::string& = "")
* class OptionParser:
  Added: const std::string& GetCommandWithArguments() const
* class RegularExpression:
  Changed: RegularExpression(std::string)
           RegularExpression(std::string, bool = false)
  Added: bool match(const std::string&, std::vector<std::string>&) const
* Functions:
  Added: LogLevel istring_to_level(const std::string&)
  Added: std::string join(const std::list<std::string>&, const std::string&)

libarccommunication

* struct HTTPClientInfo:
  Added: std::multimap<std::string, std::string> headers

libarccompute

* class Job:
  Added: std::list<std::string> DelegationID

libarccredential

No changes

libarcdata

No changes

libarcdatastaging

No changes

libarcdelegation

* class DelegationProviderSOAP:
  Added: void ID(const std::string&)
  Changed: (protected) typedef std::map<std::string,Consumer > ConsumerMap
           (protected) typedef std::map<std::string,Consumer*> ConsumerMap

libarcglobusutils

No changes

libarcinfosys

No changes

libarcloader

No changes

libarcmessage

No changes

Version 3.0.3 → 4.0.0

libarccommon

* class BaseConfig:
  Added void AddCredential(const std::string& cred)
* class LogDestination:
  Added void setPrefix(const std::string& prefix)
* Enum LogFormat:
  Added MediumFormat
* class UserConfig:
  Added bool JobListType(const std::string& type)
  Added const std::string& JobListType() const
  Added void CredentialString(const std::string& cred)
  Added const std::string& CredentialString() const
  Added static const std::string JOBLISTFILE
  Removed bool Bartender(const std::vector<URL>& urls)
  Removed void AddBartender(const URL& url)
  Removed const std::vector<URL>& Bartender() const

libarccommunication

No changes

libarccompute

* class JobInformationStorage:
  Added bool IsValid() const
  Added bool bool IsStorageExisting() const
  Added static JobInformationStorageDescriptor AVAILABLE_TYPES[]
* class JobInformationStorageXML:
  Moved from JobInformationStorage.h to JobInformationStorageXML.h
* class JobInformationStorageBDB:
  Moved from JobInformationStorage.h to JobInformationStorageBDB.h
* class JobState:
  Added JobState(const std::string& jobstate)

* Typedefs
  Added typedef struct JobInformationStorageDescriptor

libarccredential

* New class PasswordSource:
  enum Result{ NO_PASSWORD, PASSWORD, CANCEL }
  virtual Result Get(std::string& password, int minsize, int maxsize) = 0
* New class PasswordSourceNone:
  virtual Result Get(std::string& password, int minsize, int maxsize)
* New class PasswordSourceString:
  PasswordSourceString(const std::string& password)
  virtual Result Get(std::string& password, int minsize, int maxsize)
* New class PasswordSourceStream:
  PasswordSourceStream(std::istream* password)
  virtual Result Get(std::string& password, int minsize, int maxsize)
* New class PasswordSourceInteractive:
  PasswordSourceInteractive(const std::string& prompt, bool verify)
  virtual Result Get(std::string& password, int minsize, int maxsize)
* New enum Signalalgorithm { SIGN_DEFAULT = 0, SIGN_SHA1, SIGN_SHA224, SIGN_SHA256, SIGN_SHA384, SIGN_SHA512 }
* class Credential:
  Added Credential(const std::string& CAfile, const std::string& CAkey,
                   const std::string& CAserial,
                   const std::string& extfile, const std::string& extsect,
                   PasswordSource& passphrase4key);
  Added Credential(const std::string& cert, const std::string& key, const std::string& cadir,
                   const std::string& cafile, PasswordSource& passphrase4key,
                   const bool is_file = true);
  Added Credential(const UserConfig& usercfg, PasswordSource& passphrase4key)
  Added void SetSigningAlgorithm(Signalgorithm signing_algorithm = SIGN_DEFAULT)
  Added void SetKeybits(int keybits = 0)
  Added Signalgorithm GetSigningAlgorithm(void) const
  Added int GetKeybits(void) const
  Added bool OutputPrivatekey(std::string &content,  bool encryption, PasswordSource& passphrase)

libarcdata

* class DataPoint:
  Added virtual bool RequiresCredentialsInFile() const
  Added virtual void ClearTransferLocations()

libarcdatastaging

No changes

libarcdelegation

No changes

libarcglobusutils

* class GSSCredential:
  Added GSSCredential(const UserConfig& usercfg)

libarcinfosys

No changes

libarcloader

No changes

libarcmessage

No changes


Version 2.0.1 → 3.0.0

Note that in version 3.0.0 libarcdata2 was renamed to libarcdata. Furthermore the libarcclient library was split in two libraries libarccommunication and libarccompute. For further details see below.

libarccommon

* class ArcLocation:
  Added: static std::string GetDataDir()
  Added: static std::string GetToolsDir()
* class CountedPointer:
  Changed: CountedPointer(T *p)
           CountedPointer(T *p = NULL)
* class FileAccess:
  Renamed: bool    setuid(int uid,int gid)
           bool fa_setuid(int uid,int gid)
  Renamed: bool    mkdir(const std::string& path, mode_t mode)
           bool fa_mkdir(const std::string& path, mode_t mode)
  Renamed: bool    mkdirp(const std::string& path, mode_t mode)
           bool fa_mkdirp(const std::string& path, mode_t mode)
  Renamed: bool    link(const std::string& oldpath, const std::string& newpath)
           bool fa_link(const std::string& oldpath, const std::string& newpath)
  Renamed: bool    softlink(const std::string& oldpath, const std::string& newpath)
           bool fa_softlink(const std::string& oldpath, const std::string& newpath)
  Renamed: bool    copy(const std::string& oldpath, const std::string& newpath, mode_t mode)
           bool fa_copy(const std::string& oldpath, const std::string& newpath, mode_t mode)
  Renamed: bool    chmod(const std::string& path,mode_t mode)
           bool fa_chmod(const std::string& path,mode_t mode)
  Renamed: bool    stat(const std::string& path, struct stat& st)
           bool fa_stat(const std::string& path, struct stat& st)
  Renamed: bool    lstat(const std::string& path, struct stat& st)
           bool fa_lstat(const std::string& path, struct stat& st)
  Renamed: bool    fstat(struct stat& st)
           bool fa_fstat(struct stat& st)
  Renamed: bool    ftruncate(off_t length)
           bool fa_ftruncate(off_t length)
  Renamed: off_t    fallocate(off_t length)
           off_t fa_fallocate(off_t length)
  Renamed: bool    readlink(const std::string& path, std::string& linkpath)
           bool fa_readlink(const std::string& path, std::string& linkpath)
  Renamed: bool    remove(const std::string& path)
           bool fa_remove(const std::string& path)
  Renamed: bool    unlink(const std::string& path)
           bool fa_unlink(const std::string& path)
  Renamed: bool    rmdir(const std::string& path)
           bool fa_rmdir(const std::string& path)
  Renamed: bool    rmdirr(const std::string& path)
           bool fa_rmdirr(const std::string& path)
  Renamed: bool    opendir(const std::string& path)
           bool fa_opendir(const std::string& path)
  Renamed: bool    closedir(void)
           bool fa_closedir(void)
  Renamed: bool    readdir(std::string& name)
           bool fa_readdir(std::string& name)
  Renamed: bool    open(const std::string& path, int flags, mode_t mode)
           bool fa_open(const std::string& path, int flags, mode_t mode)
  Renamed: bool    close(void)
           bool fa_close(void)
  Renamed: bool    mkstemp(std::string& path, mode_t mode)
           bool fa_mkstemp(std::string& path, mode_t mode)
  Renamed: off_t    lseek(off_t offset, int whence)
           off_t fa_lseek(off_t offset, int whence)
  Renamed: ssize_t    read(void* buf,size_t size)
           ssize_t fa_read(void* buf,size_t size)
  Renamed: ssize_t    write(const void* buf,size_t size)
           ssize_t fa_write(const void* buf,size_t size)
  Renamed: ssize_t    pread(void* buf,size_t size,off_t offset)
           ssize_t fa_pread(void* buf,size_t size,off_t offset)
  Renamed: ssize_t    pwrite(const void* buf,size_t size,off_t offset)
           ssize_t fa_pwrite(const void* buf,size_t size,off_t offset)
  Added: static FileAccess* Acquire(void)
  Added: static void Release(FileAccess* fa)
  Added: bool fa_rename(const std::string& oldpath, const std::string& newpath)
* New class FileAccessContainer:
  FileAccessContainer(unsigned int minval, unsigned int maxval)
  FileAccessContainer(void)
  ~FileAccessContainer(void)
  FileAccess* Acquire(void)
  void Release(FileAccess* fa)
  void SetMin(unsigned int val)
  void SetMax(unsigned int val)
* New class InterruptGuard:
  InterruptGuard()
  ~InterruptGuard()
* class LogDestination:
  Removed: LogDestination(const std::string& locale)
* class LogFile:
  Removed: LogFile(const std::string& path, const std::string& locale)
* class Logger:
  Added: void setDestinations(const std::list<LogDestination*>& destinations)
* class LogStream:
  Removed: LogStream(std::ostream& destination, const std::string& locale)
* class URL:
  Changed: URL(const std::string& url)
           URL(const std::string& url, bool encoded = false)
  Changed: void ChangeFullPath(const std::string& newpath)
           void ChangeFullPath(const std::string& newpath, bool encoded = false)
  Changed: virtual std::string str()
           virtual std::string str(bool encode = false)
  Changed: virtual std::string plainstr() const
           virtual std::string plainstr(bool encode = false) const
  Changed: virtual std::string fullstr() const
           virtual std::string fullstr(bool encode = false) const
  Changed: std::map<std::string, std::string> ParseOptions(const std::string& optstring, char separator)
           std::map<std::string, std::string> ParseOptions(const std::string& optstring, char separator, bool encoded = false)
  Changed: static std::string OptionString(const std::map<std::string, std::string>& options, char separator)
           static std::string OptionString(const std::map<std::string, std::string>& options, char separator, bool encode = false)
  Added: void URIDecode()
  Added: static std::string URIEncode(const std::string& str)
  Added: static std::string URIDecode(const std::string& str)
  Removed: bool IsSecureProtocol() const (replaced by DataPoint::RequiresCredentials() in libarcdata)
* class User:
  Changed: User(const std::string& name)
           User(const std::string& name, const std::string& group="")
  Changed: User(int uid)
           User(int uid, int gid=-1)
  Added: operator bool() const
  Added: bool operator !() const
  Added: bool SwitchUser() const
  Removed: bool RunAs(std::string cmd)
* class UserConfig:
  Added: void AddRejectDiscoveryURLs(const std::list<std::string>& urls)
  Added: void ClearRejectDiscoveryURLs()
  Added: std::map<std::string, ConfigEndpoint> GetAllConfiguredServices()
* class XMLNode:
  Added: void Prefix(const std::string& prefix, int recursion = 0)
  Added: void StripNamespace(int recursion = 0)
  Added: bool Validate(XMLNode schema_doc, std::string &err_msg)

* Functions:
  Removed: typedef std::list<std::string> ServiceList[2]

* Defines:
  ArcVersion.h:
  Added ARC_VERSION
  Added ARC_VERSION_NUM
  Added ARC_VERSION_MAJOR
  Added ARC_VERSION_MINOR
  Added ARC_VERSION_PATCH

libarccommunication

libarccomunication was created from the splitting of the libarcclient library.

The following classes is now making up the libarccommunication library:

 ARCPolicyHandlerConfig
 DNListHandlerConfig
 ClientHTTP
 ClientHTTPAttributes
 ClientHTTPwithSAML2SSO
 ClientInterface
 ClientSOAP
 ClientSOAPwithSAML2SSO
 ClientTCP
 ClientX509Delegation
 HTTPClientInfo
 SecHandlerConfig
 TCPSec

The following are the changes to the above classes and the libarccommunication library:

* New enum EncryptionLevel:
  NoEnc, RequireEnc, PreferEnc, OptionalEnc
* New class TCPSec:
  SecurityLayer sec
  EncryptionLevel enc
  TCPSec()
  TCPSec(SecurityLayer)
  TCPSec(SecurityLayer, EncryptionLevel)
* class ClientTCP:
  Changed: ClientTCP(const BaseConfig&, const std::string&, int, SecurityLayer, int = -1, bool = false)
           ClientTCP(const BaseConfig&, const std::string&, int, TCPSec,        int = -1, bool = false)
  Changed: void AddSecHandler(XMLNode, SecurityLayer, const std::string& = "", const std::string& = "")
           void AddSecHandler(XMLNode, TCPSec,        const std::string& = "", const std::string& = "")
  Added: MCC_Status process(PayloadStreamInterface *, PayloadStreamInterface **, bool)
* New class ClientHTTPAttributes:
  ClientHTTPAttributes(const std::string&)
  ClientHTTPAttributes(const std::string&, std::multimap<std::string, std::string>&)
  ClientHTTPAttributes(const std::string&, const std::string&)
  ClientHTTPAttributes(const std::string&, const std::string&, std::multimap<std::string, std::string>&)
  ClientHTTPAttributes(const std::string&, const std::string&, uint64_t, uint64_t)
  ClientHTTPAttributes(const std::string&, const std::string&, std::multimap<std::string, std::string>&, uint64_t, uint64_t)
  (protected) const std::string default_path_
  (protected) std::multimap<std::string, std::string> default_attributes_
  (protected) const std::string& method_
  (protected) const std::string& path_
  (protected) std::multimap<std::string, std::string>& attributes_
  (protected) uint64_t range_start_
  (protected) uint64_t range_end_
* class ClientHTTP:
  Added: MCC_Status process(const ClientHTTPAttributes &, PayloadRawInterface *, HTTPClientInfo *, PayloadRawInterface **)
  Added: MCC_Status process(const ClientHTTPAttributes &, PayloadStreamInterface *, HTTPClientInfo *, PayloadRawInterface **)
  Added: MCC_Status process(const ClientHTTPAttributes &, PayloadRawInterface *, HTTPClientInfo *, PayloadStreamInterface **)
  Added: MCC_Status process(const ClientHTTPAttributes &, PayloadStreamInterface *, HTTPClientInfo *, PayloadStreamInterface **)
  Added: const URL& GetURL() const
  Changed: (protected) SecurityLayer sec
           (protected) TCPSec        sec
  Added: (protected) MCC_Status process(const std::string&, const std::string&, std::multimap<std::string, std::string>&, uint64_t, uint64_t,
                                        MessagePayload *, HTTPClientInfo *, MessagePayload **)

libarccompute

libarccompute was created from splitting of the libarcclient library.

The following classes is now making up the libarccompute library:

 AdminDomainAttributes
 AdminDomainType
 ApplicationType
 Broker
 BrokerPlugin
 BrokerPluginArgument
 BrokerPluginLoader
 BrokerPluginTestACCControl
 ComputingEndpointAttributes
 ComputingEndpointType
 ComputingManagerAttributes
 ComputingManagerType
 ComputingServiceAttributes
 ComputingServiceRetriever
 ComputingServiceType
 ComputingServiceUniq
 ComputingShareAttributes
 ComputingShareType
 DataStagingType
 DiskSpaceRequirementType
 Endpoint
 EndpointQueryingStatus
 EndpointQueryOptions
 EndpointStatusMap
 EndpointSubmissionStatus
 EntityConsumer
 EntityContainer
 EntityRetriever
 EntityRetrieverPlugin
 EntityRetrieverPluginLoader
 ExecutableType
 ExecutionEnvironmentAttributes
 ExecutionEnvironmentType
 ExecutionTarget
 ExecutionTargetSorter
 GLUE2
 GLUE2Entity
 InputFileType
 Job
 JobControllerPlugin
 JobControllerPluginArgument
 JobControllerPluginLoader
 JobControllerPluginTestACCControl
 JobDescription
 JobDescriptionParser
 JobDescriptionParserLoader
 JobDescriptionParserResult
 JobDescriptionParserTestACCControl
 JobDescriptionResult
 JobIdentificationType
 JobListRetrieverPlugin
 JobListRetrieverPluginTESTControl
 JobState
 JobStateTEST
 JobSupervisor
 LocationAttributes
 LocationType
 NotificationType
 OptIn
 OutputFileType
 ParallelEnvironmentType
 Range
 RemoteLoggingType
 ResourcesType
 ScalableTime
 ServiceEndpointRetrieverPlugin
 ServiceEndpointRetrieverPluginTESTControl
 SlotRequirementType
 Software
 SoftwareRequirement
 SourceType
 SubmissionStatus
 Submitter
 SubmitterPlugin
 SubmitterPluginArgument
 SubmitterPluginLoader
 SubmitterPluginTestACCControl
 TargetInformationRetrieverPlugin
 TargetInformationRetrieverPluginTESTControl
 TargetType

The following are the changes to the above classes and the libarccompute library:

* class BrokerPlugin:
  Changed: (protected)         const JobDescription* j
           (protected) mutable const JobDescription* j
* class Broker:
  Changed: bool isValid()
           bool isValid(bool = true)
  Added: static bool genericMatch(const ExecutionTarget&, const JobDescription&, const Arc::UserConfig&)
  Added: const JobDescription& getJobDescription() const
* Removed: class CountedBroker
* Removed: class ExecutionTargetSet
* New: class ExecutionTargetSorter
  ExecutionTargetSorter(const Broker&, const std::list<URL>& = std::list<URL>())
  ExecutionTargetSorter(const Broker&, const JobDescription&, const std::list<URL>& = std::list<URL>())
  ExecutionTargetSorter(const Broker&, const std::list<ComputingServiceType>&, const std::list<URL>& = std::list<URL>())
  ExecutionTargetSorter(const Broker&, const JobDescription&, const std::list<ComputingServiceType>&, const std::list<URL>& = std::list<URL>())
  virtual ~ExecutionTargetSorter()
  void addEntity(const ExecutionTarget&)
  void addEntity(const ComputingServiceType&)
  void addEntities(const std::list<ComputingServiceType>&)
  void reset()
  bool next()
  bool endOfList()
  const ExecutionTarget& operator*() const
  const ExecutionTarget& getCurrentTarget() const
  const ExecutionTarget* operator->() const
  const std::list<ExecutionTarget>& getMatchingTargets() const
  const std::list<ExecutionTarget>& getNonMatchingTargets() const
  void clear()
  void registerJobSubmission()
  void set(const Broker&)
  void set(const JobDescription&)
  void setRejectEndpoints(const std::list<URL>&)
* class JobState:
  Added: std::string GetSpecificState() const
  Added: (protected) typedef std::string (*SpecificStateFormater)(const std::string&)
  Added: (protected) SpecificStateFormater ssf
  Added: (protected) static std::string FormatSpecificState(const std::string&)
* class GLUE2Entity:
  Changed: T const * const operator->() const
           T const *       operator->() const
* class SubmitterPlugin:
  Changed: virtual bool             Submit(const std::list<JobDescription>&, const ExecutionTarget&, EntityConsumer<Job>&, std::list<const JobDescription*>&)
           virtual SubmissionStatus Submit(const std::list<JobDescription>&, const ExecutionTarget&, EntityConsumer<Job>&, std::list<const JobDescription*>&)
  Changed: virtual bool Migrate(const URL&,         const JobDescription&, const ExecutionTarget&, bool, Job&)
           virtual bool Migrate(const std::string&, const JobDescription&, const ExecutionTarget&, bool, Job&)
  Added: virtual SubmissionStatus Submit(const JobDescription&, const ExecutionTarget&, EntityConsumer<Job>&)
  Added: virtual SubmissionStatus Submit(const std::list<JobDescription>&, const std::string&, EntityConsumer<Job>&, std::list<const JobDescription*>&)
  Changed: (protected) void AddJobDetails(const JobDescription&, const URL&, const URL&, Job&) const
           (protected) void AddJobDetails(const JobDescription&, Job&) const
  Added: (protected) DataHandle* dest_handle
  Added: (protected) const std::map<std::string, std::string>& getInterfacePluginMap() const
* class Job:
  Removed: URL Cluster
  Removed: std::string InterfaceName
  Changed: URL         JobID
           std::string JobID
  Changed: static bool ListFilesRecursive(const UserConfig&, const URL&, std::list<std::string>&, const std::string& = "")
           static bool ListFilesRecursive(const UserConfig&, const URL&, std::list<std::string>&)
  Added: URL ServiceInformationURL
  Added: std::string ServiceInformationInterfaceName
  Added: URL JobStatusURL
  Added: std::string JobStatusInterfaceName
  Added: URL JobManagementURL
  Added: std::string JobManagementInterfaceName
  Added: URL StageInDir
  Added: URL StageOutDir
  Added: URL SessionDir
  Added: bool PrepareHandler(const UserConfig&)
  Added: bool Update()
  Added: bool Clean()
  Added: bool Cancel()
  Added: bool Resume()
  Added: bool Renew()
  Added: static bool WriteJobsToFile(const std::string&, const std::list<Job>&, const std::set<std::string>&, std::list<const Job*>&, unsigned = 10, unsigned = 500000)
  Changed: static bool RemoveJobsFromFile(const std::string&, const std::list<URL>&,         unsigned = 10, unsigned = 500000)
           static bool RemoveJobsFromFile(const std::string&, const std::list<std::string>&, unsigned = 10, unsigned = 500000)
  Changed: static bool WriteJobIDToFile(const URL&,         const std::string&, unsigned = 10, unsigned = 500000)
           static bool WriteJobIDToFile(const std::string&, const std::string&, unsigned = 10, unsigned = 500000)
  Changed  static bool WriteJobIDsToFile(const std::list<URL>&, const std::string&, unsigned = 10, unsigned = 500000)
           static bool WriteJobIDsToFile(const std::list<std::string>&, const std::string&, unsigned = 10, unsigned = 500000)
* class ComputingEndpointAttributes;
  Changed: std::list<std::string> Capability
           std::set<std::string>  Capability
* class ComputingServiceAttributes:
  Changed: std::list<std::string> Capability
           std::set<std::string>  Capability
* class ComputingServiceAttributes:
  Removed: URL Cluster
  Renamed: Endpoint OriginalEndpoint
           Endpoint InformationOriginEndpoint
* class ExecutionTarget:
  Changed: ExecutionTarget(const CountedPointer<LocationAttributes>&, const CountedPointer<AdminDomainAttributes>&,
                           const CountedPointer<ComputingServiceAttributes>&, const CountedPointer<ComputingEndpointAttributes>&,
                           const CountedPointer<ComputingShareAttributes>&, const CountedPointer<ComputingManagerAttributes>&,
                           const CountedPointer<ExecutionEnvironmentAttributes>&, const CountedPointer< std::map<std::string, double> >&,
                           const CountedPointer< std::list<ApplicationEnvironment> >&)
           ExecutionTarget(const CountedPointer<LocationAttributes>&, const CountedPointer<AdminDomainAttributes>&,
                           const CountedPointer<ComputingServiceAttributes>&, const CountedPointer<ComputingEndpointAttributes>&,
                           const std::list< CountedPointer<ComputingEndpointAttributes> >&,
                           const CountedPointer<ComputingShareAttributes>&, const CountedPointer<ComputingManagerAttributes>&,
                           const CountedPointer<ExecutionEnvironmentAttributes>&, const CountedPointer< std::map<std::string, double> >&,
                           const CountedPointer< std::list<ApplicationEnvironment> >&)
  Changed: bool             Submit(const UserConfig&, const JobDescription&, Job&) const
           SubmissionStatus Submit(const UserConfig&, const JobDescription&, Job&) const
  Removed: void SaveToStream(std::ostream&, bool) const
  Added: std::list< CountedPointer<ComputingEndpointAttributes> > OtherEndpoints
* class JobSupervisor:
  Changed: class JobSupervisor
           class JobSupervisor : public EntityConsumer<Job>
  Removed: std::list<Job> GetJobs(bool = true) const
  Added: void addEntity(const Job&)
  Changed: void SelectByID(const std::list<URL>&)
           void SelectByID(const std::list<std::string>&)
  Changed: const std::list<URL>&         GetIDsProcessed() const
           const std::list<std::string>& GetIDsProcessed() const
  Changed: const std::list<URL>&         GetIDsNotProcessed() const
  Changed: const std::list<std::string>& GetIDsNotProcessed() const
* New class ComputingServiceUniq : public EntityConsumer<ComputingServiceType>
  void addEntity(const ComputingServiceType&)
  std::list<ComputingServiceType> getServices()
* class ComputingServiceRetriever:
  Changed: ComputingServiceRetriever(const UserConfig&, const std::list<Endpoint>& = std::list<Endpoint>(),
                                     const std::list<std::string>& = std::list<std::string>(),
                                     const std::list<std::string>& = std::list<std::string>(),
                                     const std::list<std::string>& = std::list<std::string>(1, Endpoint::GetStringForCapability(Endpoint::COMPUTINGINFO))
           ComputingServiceRetriever(const UserConfig&, const std::list<Endpoint>& = std::list<Endpoint>(),
                                     const std::list<std::string>& = std::list<std::string>(),
                                     const std::set<std::string>& = std::set<std::string>(),
                                     const std::list<std::string>& = std::list<std::string>(1, Endpoint::GetStringForCapability(Endpoint::COMPUTINGINFO))
* New class EndpointStatusMap : public std::map<Endpoint, EndpointQueryingStatus, EndpointCompareFn>
  EndpointStatusMap()
  EndpointStatusMap(EndpointCompareFn)
  EndpointStatusMap(const EndpointStatusMap&)
  ~EndpointStatusMap()
* class Endpoint:
  enum CapabilityEnum:
    Removed: ANY
    Added: JOBCREATION, UNSPECIFIED
 
  Changed: Endpoint(const std::string& = "", const std::list<std::string>& = std::list<std::string>(), const std::string& = "")
           Endpoint(const std::string& = "", const std::set<std::string>&  = std::set<std::string>(),  const std::string& = "")
  Added: Endpoint(const ExecutionTarget&, const std::string& = "");
  Added: Endpoint(const ComputingEndpointAttributes&, const std::string& = "")
  Changed: bool HasCapability(      std::string ) const
           bool HasCapability(const std::string&) const
  Added: std::string getServiceName() const
  Added: static bool ServiceIDCompare(const Endpoint&, const Endpoint&)
  Changed: std::list<std::string> Capability
           std::set<std::string>  Capability
  Added: std::string ServiceID
  Added: static std::pair<EndpointStatusMap::const_iterator, EndpointStatusMap::const_iterator> getServiceEndpoints(const Endpoint&, const EndpointStatusMap&)
* class ApplicationType:
  Added: ApplicationType& operator=(const ApplicationType&)
* class ResourcesType:
  Added: ResourcesType& operator=(const ResourcesType&)
  Changed: ScalableTime<int>  TotalWallTime
           ScalableTime<int>& TotalWallTime
* class JobDescription:
  Added: static JobDescriptionResult ParseFromFile(const std::string&, std::list<JobDescription>&, const std::string& = "", const std::string& = "")
  Added: bool Prepare()
* class Software:
  Added: void addOptions(const std::list<std::string>&)
* New class EndpointSubmissionStatus:
  enum EndpointSubmissionStatusType:
    UNKNOWN, NOPLUGIN, SUCCESSFUL
  EndpointSubmissionStatus(EndpointSubmissionStatusType = UNKNOWN, const std::string& = "")
  bool operator==(EndpointSubmissionStatusType) const
  bool operator==(const EndpointSubmissionStatus&) const
  bool operator!=(EndpointSubmissionStatusType) const
  bool operator!=(const EndpointSubmissionStatus&) const
  bool operator!() const
  operator bool() const
  EndpointSubmissionStatus& operator=(EndpointSubmissionStatusType)
  EndpointSubmissionStatus& operator=(const EndpointSubmissionStatus&)
  EndpointSubmissionStatusType getStatus() const
  const std::string& getDescription() const
  std::string str() const
  static std::string str(EndpointSubmissionStatusType)
* class Submitter:
  Changed:             bool Submit(const ExecutionTarget&, const JobDescription&)
           SubmissionStatus Submit(const ExecutionTarget&, const JobDescription&)
  Changed:             bool Submit(const ExecutionTarget&, const JobDescription&, Job&)
           SubmissionStatus Submit(const ExecutionTarget&, const JobDescription&, Job&)
  Changed:             bool Submit(const ExecutionTarget&, const std::list<JobDescription>&)
           SubmissionStatus Submit(const ExecutionTarget&, const std::list<JobDescription>&)
  Changed:             bool Submit(const ExecutionTarget&, const std::list<JobDescription>&, std::list<Job>&)
           SubmissionStatus Submit(const ExecutionTarget&, const std::list<JobDescription>&, std::list<Job>&)
  Added: SubmissionStatus Submit(const Endpoint&, const JobDescription&)
  Added: SubmissionStatus Submit(const Endpoint&, const JobDescription&, Job&);
  Added: SubmissionStatus Submit(const Endpoint&, const std::list<JobDescription>&)
  Added: SubmissionStatus Submit(const Endpoint&, const std::list<JobDescription>&, std::list<Job>&)
  Added: SubmissionStatus Submit(const std::list<Endpoint>&, const std::list<JobDescription>&)
  Added: SubmissionStatus Submit(const std::list<Endpoint>&, const std::list<JobDescription>&, std::list<Job>&)
  Added: SubmissionStatus BrokeredSubmit(const std::list<std::string>&, const std::list<JobDescription>&,
                                         const std::list<std::string>& = std::list<std::string>())
  Added: SubmissionStatus BrokeredSubmit(const std::list<std::string>&, const std::list<JobDescription>&, std::list<Job>&,
                                         const std::list<std::string>& = std::list<std::string>())
  Added: SubmissionStatus BrokeredSubmit(const std::list<Endpoint>&, const std::list<JobDescription>&,
                                         const std::list<std::string>& = std::list<std::string>())
  Added: SubmissionStatus BrokeredSubmit(const std::list<Endpoint>&, const std::list<JobDescription>&, std::list<Job>&,
                                         const std::list<std::string>& = std::list<std::string>())
  Added: const EndpointStatusMap& GetEndpointQueryingStatuses() const
  Added: void ClearEndpointQueryingStatuses()
  Added: const std::map<Endpoint, EndpointSubmissionStatus>& GetEndpointSubmissionStatuses() const
  Added: void ClearEndpointSubmissionStatuses()
  Added: void ClearAllStatuses()
  Added: void ClearAll()
* class EndpointQueryOptions
  Changed: EndpointQueryOptions(std::list<std::string>       = std::list<std::string>())
           EndpointQueryOptions(const std::set<std::string>& = std::set<std::string>())
  Changed:       std::list<std::string>& getPreferredInterfaceNames() 
           const std::set<std::string>&  getPreferredInterfaceNames() const
* class EndpointQueryOptions<Endpoint>
   Changed: EndpointQueryOptions(bool = false, const std::list<std::string>& = std::list<std::string>(), const std::list<std::string>& = std::list<std::string>())
            EndpointQueryOptions(bool = false, const std::list<std::string>& = std::list<std::string>(), const std::list<std::string>& = std::list<std::string>(),
                                 const std::set<std::string>& = std::set<std::string>())
  Changed:       std::list<std::string>& getPreferredInterfaceNames()
           const std::set<std::string>&  getPreferredInterfaceNames() const
* class EntityRetriever
  Added: EndpointStatusMap getAllStatuses() const
  Added: void getServicesWithStatus(const EndpointQueryingStatus&, std::set<std::string>&)
  Added: (protected) void checkSuspendedAndStart(const Endpoint&)
  Changed: (protected) std::map<Endpoint, EndpointQueryingStatus> statuses
           (protected) EndpointStatusMap                          statuses
  Changed: (protected)       EndpointQueryOptions<T> options
           (protected) const EndpointQueryOptions<T> options
* New: class ServiceEndpointRetrieverPlugin : public EntityRetrieverPlugin<Endpoint>:
  (protected) ServiceEndpointRetrieverPlugin(PluginArgument*)
  (protected) virtual ~ServiceEndpointRetrieverPlugin()
* New: class TargetInformationRetrieverPlugin : public EntityRetrieverPlugin<ComputingServiceType>:
  (protected) TargetInformationRetrieverPlugin(PluginArgument*)
  (protected) virtual ~TargetInformationRetrieverPlugin()
* New: class JobListRetrieverPlugin : public EntityRetrieverPlugin<Job>:
  (protected) JobListRetrieverPlugin(PluginArgument*)
  (protected) virtual ~JobListRetrieverPlugin()
* class EndpointQueryingStatus:
  enum EndpointQueryingStatusType:
    Added: SUSPENDED_NOTREQUIRED
  Changed: bool operator==(EndpointQueryingStatusType)
           bool operator==(EndpointQueryingStatusType) const
  Changed: bool operator==(const EndpointQueryingStatus&)
           bool operator==(const EndpointQueryingStatus&) const
  Changed: bool operator!=(EndpointQueryingStatusType)
           bool operator!=(EndpointQueryingStatusType) const
  Changed: bool operator!=(const EndpointQueryingStatus&)
           bool operator!=(const EndpointQueryingStatus&) const
  Changed: EndpointQueryingStatus     getStatus() const
           EndpointQueryingStatusType getStatus() const
* class JobControllerPlugin:
  Changed: virtual void UpdateJobs(std::list<Job*>&, std::list<URL>&        , std::list<URL>&,         bool = false) const
           virtual void UpdateJobs(std::list<Job*>&, std::list<std::string>&, std::list<std::string>&, bool = false) const
  Changed: virtual bool CleanJobs(const std::list<Job*>&, std::list<URL>&,         std::list<URL>&,         bool = false) const
           virtual bool CleanJobs(const std::list<Job*>&, std::list<std::string>&, std::list<std::string>&, bool = false) const
  Changed: virtual bool CancelJobs(const std::list<Job*>&, std::list<URL>&,         std::list<URL>&,         bool = false) const
           virtual bool CancelJobs(const std::list<Job*>&, std::list<std::string>&, std::list<std::string>&, bool = false) const
  Changed  virtual bool RenewJobs(const std::list<Job*>&, std::list<URL>&,         std::list<URL>&,         bool = false) const
           virtual bool RenewJobs(const std::list<Job*>&, std::list<std::string>&, std::list<std::string>&, bool = false) const
  Changed: virtual bool ResumeJobs(const std::list<Job*>&, std::list<URL>&,         std::list<URL>&,         bool = false) const
           virtual bool ResumeJobs(const std::list<Job*>&, std::list<std::string>&, std::list<std::string>&, bool = false) const
* Renamed: class JobControllerPluginPluginArgument
           class JobControllerPluginArgument
* class SubmitterPluginTestACCControl:
  Changed: static bool             submitStatus
           static SubmissionStatus submitStatus
* class ServiceEndpointRetrieverPluginTESTControl:
  Removed: static float delay
  Changed: static           EndpointQueryingStatus  status
           static std::list<EndpointQueryingStatus> status
  Changed: static            std::list<Endpoint>   endpoints
           static std::list< std::list<Endpoint> > endpoints
  Added: static std::list<SimpleCondition*> condition
* Functions:
  Added: (friend LocationAttributes) std::ostream& operator<<(std::ostream&, const LocationAttributes&)
  Added: (friend AdminDomainAttributes) std::ostream& operator<<(std::ostream&, const AdminDomainAttributes&)
  Added: (friend ExecutionEnvironmentAttributes) std::ostream& operator<<(std::ostream&, const ExecutionEnvironmentAttributes&)
  Added: (friend ComputingManagerAttributes) std::ostream& operator<<(std::ostream&, const ComputingManagerAttributes&)
  Added: (friend ComputingShareAttributes) std::ostream& operator<<(std::ostream&, const ComputingShareAttributes&)
  Added: (friend ComputingServiceType) std::ostream& operator<<(std::ostream&, const ComputingServiceType&)
  Added: (friend ComputingEndpointAttributes) std::ostream& operator<<(std::ostream&, const ComputingEndpointAttributes&)
  Added: (friend ComputingServiceAttributes) std::ostream& operator<<(std::ostream&, const ComputingServiceAttributes&)
  Added: (friend ExecutionTarget) std::ostream& operator<<(std::ostream&, const ExecutionTarget&)
  Added: (friend EndpointQueryingStatus) bool operator==(EndpointQueryingStatusType, const EndpointQueryingStatus&)
* Typedef:
  Removed: typedef EntityRetrieverPlugin<Endpoint> ServiceEndpointRetrieverPlugin
  Removed: typedef EntityRetrieverPlugin<ComputingServiceType> TargetInformationRetrieverPlugin
  Removed: typedef EntityRetrieverPlugin<Job> JobListRetrieverPlugin
  Added: typedef bool (*EndpointCompareFn)(const Endpoint&, const Endpoint&);

libarcloader

* class PluginDesc:
  Added: uint32_t priority
* Removed class LoadableModuleDescription
* Typedef:
  Removed: std::map<std::string, LoadableModuleDescription> plugin_cache_t
  Added: void (*arc_module_constructor_func)(Glib::Module*, ModuleManager*)
  Added: void (*arc_module_destructor_func)(Glib::Module*, ModuleManager*)

libarcdata

libarcdata was renamed from libarcdata2

* class DataMover:
  Added: void Cancel()
* class DataPointIndex:
  Changed: virtual DataStatus Check()
           virtual DataStatus Check(bool check_meta)
* class DataPoint:
  Added: typedef void(*Callback3rdParty)(unsigned long long int bytes_transferred)
  Added: static DataStatus Transfer3rdParty(const URL& source, const URL& destination, const UserConfig& usercfg, Callback3rdParty callback = NULL)
  Changed: virtual DataStatus Check()
           virtual DataStatus Check(bool check_meta)
  Added: virtual DataStatus Rename(const URL& newurl)
  Added: virtual bool RequiresCredentials() const (replaces URL::IsSecureProtocol() in libarccommon)
  Removed: virtual bool CheckCreated() const
  Added: virtual bool CheckModified() const
  Removed: virtual void SetCreated(const Time& val)
  Added: virtual void SetModified(const Time& val)
  Removed: virtual const Time& GetCreated() const
  Added: virtual const Time& GetModified() const
* class DataStatus:
  * enum DataStatusType:
    Added: RenameError
    Deprecated: ListNonDirError, StatNotPresentError and all *ErrorRetryable
  Added: DataStatus(const DataStatusType& status, int error_no, const std::string& desc="")
  Added: void SetErrNo(int error_no)
  Added: int GetErrno() const
  Added: std::string GetStrErrno() const
* class FileInfo:
  Removed: bool CheckCreated() const
  Added: bool CheckModified() const
  Removed: void SetCreated(const Time& t)
  Added: void SetModified(const Time& t)
  Removed: Time GetCreated() const
  Added: Time GetModified() const

libarccredential

* New struct AuthN::certInfo
  std::string certname
  std::string subject_dn
  std::string issuer_dn
  unsigned long serial
  Arc::Time start
  Arc::Time end
* Functions:
  Changed: bool AuthN::nssCreateCert(const std::string&, const std::string&, const char*, const int,                     std::string&, bool = true)
           bool AuthN::nssCreateCert(const std::string&, const std::string&, const char*, const int, const std::string&, std::string&, bool = true)
  Added: void AuthN::nssListUserCertificatesInfo(std::list<certInfo>&)
  Added: bool parseVOMSAC(const std::string&, const std::string&, const std::string&, const std::string&, VOMSTrustList&, std::vector<VOMSACInfo>&,
                          bool = true, bool = false)
  Added: char *VOMSEncode(const char *, int, int *)
  Added: bool VOMSACSeqEncode(const std::string&, std::string&)
  Added: bool VOMSACSeqEncode(const std::list<std::string>, std::string&)
  Added: char* AuthN::nss_get_password_from_console(PK11SlotInfo*, PRBool, void *)
* Typedef:
  Changed: unsigned int        uint32
           unsigned int AuthN::uint32
  Changed: int        int32
           int AuthN::int32
  Changed: unsigned short        uint16
           unsigned short AuthN::uint16
  Changed: short        int16
           short AuthN::int16
  Changed: unsigned char        uint8
           unsigned char AuthN::uint8
  Changed: signed char        int8
           signed char AuthN::int8

libarcdelegation

* class DelegationInterface:
  typedef enum ServiceType:
    Added: EMIDS, EMIDSRENEW

libarcmessage

* class MCC:
  Added: (protected) Glib::Mutex next_lock_
* class PayloadStreamInterface:
  Changed: virtual std::string Get() = 0
           virtual std::string Get()
  Changed: virtual bool Get(std::string&) = 0
           virtual bool Get(std::string&)
  Changed: virtual bool Put(const std::string&) = 0
           virtual bool Put(const std::string&)
  Changed: virtual bool Put(const char*) = 0
           virtual bool Put(const char*)
  Added: virtual bool Get(PayloadStreamInterface&, int&)
  Added: virtual bool Put(PayloadStreamInterface&, Size_t)
* class PayloadStream:
  Removed: virtual std::string Get()
  Removed: virtual bool Get(std::string&)
  Removed: virtual bool Put(const char*)
  Removed: virtual bool Put(const std::string&)

libarcinfosys

* class InfoRegistrar:
  Added: bool empty()

libarcdatastaging

* class DataStaging::DTR:
  Removed: std::list<DTRCallback*> get_callbacks(const std::map<StagingProcesses, std::list<DTRCallback*> >& proc_callback, StagingProcesses owner)
  Removed: DTR()
  Added: static Arc::LogLevel LOG_LEVEL
* class DataStaging::Scheduler:
  Added: static Scheduler* getInstance()
* Functions in namespace DataStaging:
  Added DTR_ptr createDTRPtr(const std::string& source, const std::string& destination, const Arc::UserConfig& usercfg, const std::string& jobid, const uid_t& uid, DTRLogger log)
  Added DTRLogger createDTRLogger(Arc::Logger& parent, const std::string& subdomain)

libarcglobusutils

* Functions:
  Added: int globus_error_to_errno(const std::string&, int)

Version 1.1.1 → 2.0.0

libarccommon

* Removed: class MemoryAllocationException
* Removed: class ByteArray
* Removed: class DItem
* Removed: class DBranch
* Removed: class DItemString
* class FileLock:
  Changed: bool check()
           int  check(bool = true)
* class Run:
  Added: Time RunTime()
  Added: Time ExitTime()
  Added: (protected) Time run_time_
  Added: (protected) Time exit_time_
* class PrintFBase:
  Added: virtual void msg(std::string&) = 0
* class PrintF:
  Added: virtual void msg(std::string&)
* class IString:
  Added: std::string str()
* template<typename T> class AutoPointer:
  Renamed: operator T*() const
           T* Ptr() const
* template<typename T> class CountedPointer:
  Changed: CountedPointer(      CountedPointer<T>&)
           CountedPointer(const CountedPointer<T>&)
  Added: bool operator==(const CountedPointer&) const
  Added: bool operator!=(const CountedPointer&) const
  Added: bool operator<(const CountedPointer&) const
  Renamed: operator T*() const
           T* Ptr() const
  Changed:         int get()
           virtual int get() const
  Changed:         void wait()
           virtual void wait() const
  Changed:         bool wait(int)
           virtual bool wait(int) const
* New class ThreadedPointerBase:
  ThreadedPointerBase(void *)
  ThreadedPointerBase* add()
  void* rem()
  void* ptr() const
  void rel()
  unsigned int cnt() const
  void lock()
  void unlock()
  void wait()
  bool wait(Glib::TimeVal)
* New template<typename T> class ThreadedPointer:
  ThreadedPointer()
  ThreadedPointer(T *)
  ThreadedPointer(const ThreadedPointer<T>&)
  ThreadedPointer<T>& operator=(T *)
  ThreadedPointer<T>& operator=(const ThreadedPointer<T>&)
  T& operator*() const
  T* operator->() const
  operator bool() const
  bool operator!() const
  bool operator==(const ThreadedPointer&) const
  bool operator!=(const ThreadedPointer&) const
  bool operator<(const ThreadedPointer&) const
  T* Ptr() const
  T* Release()
  unsigned int Holders()
  unsigned int WaitOutRange(unsigned int, unsigned int)
  unsigned int WaitOutRange(unsigned int, unsigned int, int)
  unsigned int WaitInRange(unsigned int, unsigned int)
  unsigned int WaitInRange(unsigned int, unsigned int, int)
* class ThreadInitializer:
  Added: void waitExit()
* class ConfigEndpoint:
  enum Type:
    REGISTRY
    COMPUTINGINFO
    ANY
  ConfigEndpoint(const std::string& = "", const std::string& = "", ConfigEndpoint::Type = ConfigEndpoint::ANY)
  Type type
  std::string URLString
  std::string InterfaceName
  std::string RequestedSubmissionInterfaceName
  operator bool() const
  bool operator!() const
  bool operator==(ConfigEndpoint) const
* class initializeCredentialsType:
  enum initializeType:
    Removed: SkipCACredentials
    Added: NotTryCredentials
    Added: SkipCANotTryCredentials
    Added: SkipCATryCredentials
    Added: SkipCARequireCredentials
  Added: operator initializeType()
* class UserConfig:
  Removed: bool ResolveAliases(std::list<std::string>&, ServiceType);
  Removed: bool AddServices(const std::list<std::string>&, ServiceType);
  Removed: bool AddServices(const std::list<std::string>&, const std::list<std::string>&, ServiceType)
  Removed: const std::list<std::string>& GetSelectedServices(ServiceType) const
  Removed: const std::list<std::string>& GetRejectedServices(ServiceType) const
  Removed: void ClearSelectedServices()
  Removed: void ClearSelectedServices(ServiceType)
  Removed: void ClearRejectedServices()
  Removed: void ClearRejectedServices(ServiceType)
  Changed: void InitializeCredentials()
           bool InitializeCredentials(initializeCredentialsType)
  Added: std::list<ConfigEndpoint> GetDefaultServices(ConfigEndpoint::Type = ConfigEndpoint::ANY)
  Added: ConfigEndpoint GetService(const std::string&)
  Added: std::list<ConfigEndpoint> GetServices(const std::string&, ConfigEndpoint::Type = ConfigEndpoint::ANY)
  Added: std::list<ConfigEndpoint> GetServicesInGroup(const std::string&, ConfigEndpoint::Type = ConfigEndpoint::ANY)
  Added: const std::string& InfoInterface() const
  Added: bool InfoInterface(const std::string&)
  Added: const std::string& SubmissionInterface() const
  Added: bool SubmissionInterface(const std::string&)
  Added: const std::list<std::string>& RejectDiscoveryURLs() const
  Added: const std::list<std::string>& RejectManagementURLs() const
* Functions:
  Changed: template<typename T> std::string tostring(T, const int = 0, const int = 0)
           template<typename T> std::string tostring(T,       int = 0,       int = 0)
  Changed: bool FileCreate(const std::string&, const std::string&, uid_t = 0, gid_t = 0            )
           bool FileCreate(const std::string&, const std::string&, uid_t = 0, gid_t = 0, mode_t = 0)
  Changed: bool DirDelete(const std::string&)
           bool DirDelete(const std::string&, bool = true)
  Changed: bool DirDelete(const std::string&, uid_t,gid_t)
           bool DirDelete(const std::string&, bool, uid_t, gid_t)
  Changed: bool TmpFileCreate(std::string&, const std::string&, uid_t = 0, gid_t = 0)
           bool TmpFileCreate(std::string&, const std::string&, uid_t = 0, gid_t = 0, mode_t = 0)
  Added: bool strtoint(const std::string&, signed   int&,       int = 10)
  Added: bool strtoint(const std::string&, unsigned int&,       int = 10)
  Added: bool strtoint(const std::string&, signed   long&,      int = 10)
  Added: bool strtoint(const std::string&, unsigned long&,      int = 10)
  Added: bool strtoint(const std::string&, signed   long long&, int = 10)
  Added: bool strtoint(const std::string&, unsigned long long&, int = 10)
  Added:        std::string inttostr(signed   long long, int = 10, int = 0)
  Added:        std::string inttostr(unsigned long long, int = 10, int = 0)
  Added: inline std::string inttostr(signed   int,       int = 10, int = 0)
  Added: inline std::string inttostr(unsigned int,       int = 10, int = 0)
  Added: inline std::string inttostr(signed   long,      int = 10, int = 0)
  Added: inline std::string inttostr(unsigned long,      int = 10, int = 0)
  Added: bool FileRead(const std::string&, std::string&, uid_t = 0, gid_t = 0)
  Added: bool CanonicalDir(std::string&, bool = true)

libarcclient

* Removed class TargetRetriever
* Removed class TargetGenerator
* Removed class JobController
* New class JobControllerPlugin:
  (protected) JobControllerPlugin(const UserConfig&, PluginArgument*)
  virtual void UpdateJobs(std::list<Job*>&, bool = false) const
  virtual void UpdateJobs(std::list<Job*>&, std::list<URL>&, std::list<URL>&, bool = false) const = 0
  virtual bool CleanJobs(const std::list<Job*>&, bool = false) const
  virtual bool CleanJobs(const std::list<Job*>&, std::list<URL>&, std::list<URL>&, bool = false) const = 0
  virtual bool CancelJobs(const std::list<Job*>&, bool = false) const
  virtual bool CancelJobs(const std::list<Job*>&, std::list<URL>&, std::list<URL>&, bool = false) const = 0
  virtual bool RenewJobs(const std::list<Job*>&, bool = false) const
  virtual bool RenewJobs(const std::list<Job*>&, std::list<URL>&, std::list<URL>&, bool = false) const = 0
  virtual bool ResumeJobs(const std::list<Job*>&, bool = false) const
  virtual bool ResumeJobs(const std::list<Job*>&, std::list<URL>&, std::list<URL>&, bool = false) const = 0
  virtual bool GetJobDescription(const Job&, std::string&) const = 0
  virtual bool GetURLToJobResource(const Job&, Job::ResourceType, URL&) const = 0
  virtual std::string GetGroupID() const
  virtual const std::list<std::string>& SupportedInterfaces() const
  (protected) const UserConfig& usercfg;
  (protected) std::list<std::string> supportedInterfaces
  (protected) static Logger logger
* Renamed class JobControllerLoader
                JobControllerPluginLoader
* class JobControllerPluginLoader:
  Removed: const std::list<JobController*>& GetJobControllers() const
  Added: JobControllerPlugin* loadByInterfaceName(const std::string&, const UserConfig&)
* Renamed class JobControllerPluginArgument
                JobControllerPluginPluginArgument
* class JobSupervisor
  Removed: JobSupervisor(const UserConfig&, const std::list<std::string>&)
  Removed: bool Get(const std::list<std::string>&, const std::string&, bool, bool, std::list<URL>&)
  Removed: bool Kill(const std::list<std::string>&, std::list<URL>&)
  Removed: const std::list<JobController*>& GetJobControllers()
  Removed: bool JobsFound() const;
  Changed: std::list<Job> GetJobs() const
           std::list<Job> GetJobs(bool = true) const
  Changed: bool Renew(const std::list<std::string>&, std::list<URL>&)
           bool Renew()
  Changed: bool Resume(const std::list<std::string>&, std::list<URL>&)
           bool Resume()
  Changed: bool Resubmit(const std::list<std::string>&, int, std::list<Job>&, std::list<URL>&)
           bool Resubmit(int, const std::list<Endpoint>&, std::list<Job>&, const std::list<std::string>& = std::list<std::string>())
  Changed: bool Migrate(bool, std::list<Job>&, std::list<URL>&)
           bool Migrate(bool, const std::list<Endpoint>&, std::list<Job>&, const std::list<std::string>& = std::list<std::string>())
  Changed: std::list<URL> Cancel(const std::list<URL>&, std::list<URL>&)
           bool Cancel()
  Changed: std::list<URL> Clean(const std::list<URL>&, std::list<URL>&)
           bool Clean()
  Added: bool Retrieve(const std::string&, bool, bool, std::list<std::string>&)
  Added: const std::list<Job>& GetAllJobs() const
  Added: std::list<Job> GetSelectedJobs() const
  Added: void SelectValid()
  Added: void SelectByStatus(const std::list<std::string>&)
  Added: void SelectByID(const std::list<URL>&)
  Added: void ClearSelection()
  Added: const std::list<URL>& GetIDsProcessed() const
  Added: const std::list<URL>& GetIDsNotProcessed() const
* Renamed class Submitter
                SubmitterPlugin
* Removed class Broker
* New class BrokerPlugin
  BrokerPlugin(BrokerPluginArgument*)
  virtual bool operator() (const ExecutionTarget&, const ExecutionTarget&) const
  virtual bool match(const ExecutionTarget&) const
  virtual void set(const JobDescription&)
  (protected) const UserConfig& uc
  (protected) const JobDescription* j
  (protected) static Logger logger
* New class Broker:
  Broker(const UserConfig&, const std::string& = "")
  Broker(const UserConfig&, const JobDescription&, const std::string& = "")
  Broker(const Broker&)
  Broker& operator=(const Broker&)
  bool operator() (const ExecutionTarget&, const ExecutionTarget&) const
  bool match(const ExecutionTarget&) const
  bool isValid() const
  void set(const JobDescription&)
* class BrokerPluginArgument:
  Changed: operator const UserConfig&()
           operator const UserConfig&() const
* Renamed class BrokerLoader
                BrokerPluginLoader
* class BrokerPluginLoader:
  Removed: const std::list<Broker*>& GetBrokers() const
  Changed: BrokerPlugin* load(const std::string&, const UserConfig&);
           BrokerPlugin* load(const UserConfig&, const std::string& = "", bool = true)
  Added: BrokerPlugin* load(const UserConfig& uc, const JobDescription&, const std::string& = "", bool = true)
  Added: BrokerPlugin* copy(const BrokerPlugin*, bool = true)
* New class CountedBroker
  CountedBroker(Broker*)
  CountedBroker(const CountedBroker&)
  bool operator()(const ExecutionTarget&,const ExecutionTarget&) const
* New class ExecutionTargetSet:
  ExecutionTargetSet(const Broker&, const std::list<URL>& = std::list<URL>())
  ExecutionTargetSet(const Broker&, const std::list<ComputingServiceType>&, const std::list<URL>& = std::list<URL>())
  std::pair<ExecutionTargetSet::iterator, bool> insert(const ExecutionTarget&)
  ExecutionTargetSet::iterator insert(ExecutionTargetSet::iterator, const ExecutionTarget&)
  void addEntity(const ComputingServiceType&)
  void addEntities(const std::list<ComputingServiceType>&)
  void set(const JobDescription&)
* class JobController:
  Removed: bool Cat(const std::list<std::string>&, const std::string&)
  Removed: bool PrintJobStatus(const std::list<std::string>&, bool)
* Renamed class Submitter
                SubmitterPlugin
* class SubmitterPlugin:
  Removed: URL Submit(const JobDescription&, const ExecutionTarget&)
  Removed: bool Submit(const JobDescription&, Job&)
  Removed: URL Migrate(const URL&, const JobDescription&, const ExecutionTarget&, bool)
  Removed: bool Migrate(const URL&, const JobDescription&, bool, Job&)
  Removed: void AddJob(const JobDescription&, const URL&, const URL&, const URL&)
  Removed: void AddJob(const JobDescription&, const URL&, const URL&, const URL&, const std::map<std::string, std::string>&) const
  Removed: void SetSubmissionTarget(const ExecutionTarget&)
  Removed: (protected) const std::string flavour
  Removed: (protected) const ExecutionTarget* target
  Moved: bool GetTestJob(const int&, JobDescription&)
         static bool JobDescription::GetTestJob(int, JobDescription&)
  Moved: virtual bool ModifyJobDescription(JobDescription&, const ExecutionTarget&) const = 0
         bool JobDescription::Prepare(const ExecutionTarget&)
  Changed: SubmitterPlugin(const UserConfig&, const std::string&)
           SubmitterPlugin(const UserConfig&, PluginArgument*)
  Changed: virtual bool Submit(const JobDescription&, const ExecutionTarget&, Job&) = 0;
           virtual bool Submit(const std::list<JobDescription>&, const ExecutionTarget&,
                               EntityConsumer<Job>&, std::list<const JobDescription*>&) = 0
  Changed: virtual bool Migrate(const URL&, const JobDescription&, const ExecutionTarget&, bool, Job&) = 0
           virtual bool Migrate(const URL&, const JobDescription&, const ExecutionTarget&, bool, Job&)
  Changed: (protected) void AddJobDetails(const JobDescription&, const URL&, const URL&, const URL&, Job&) const
           (protected) void AddJobDetails(const JobDescription&, const URL&, const URL&,             Job&) const
  Added: (protected) std::list<std::string> supportedInterfaces
  Added: virtual const std::list<std::string>& SupportedInterfaces() const
* Renamed class SubmitterLoader
                SubmitterPluginLoader
* class SubmitterPluginLoader:
  Removed: const std::list<Submitter*>& GetSubmitters() const
  Added: SubmitterPlugin* loadByInterfaceName(const std::string&, const UserConfig&)
* New class Submitter:
  Submitter(const UserConfig&)
  void addConsumer(EntityConsumer<Job>&)
  void removeConsumer(EntityConsumer<Job>&)
  bool Submit(const ExecutionTarget&,   const JobDescription&)
  bool Submit(const ExecutionTarget&,   const JobDescription&, Job&)
  bool Submit(const ExecutionTarget&,   const std::list<JobDescription>&)
  bool Submit(const ExecutionTarget&,   const std::list<JobDescription>&, std::list<Job>&)
  const std::list<const JobDescription*>& GetDescriptionsNotSubmitted() const
  void ClearNotSubmittedDescriptions()
* New class EndpointQueryingStatus:
  EndpointQueryingStatus(EndpointQueryingStatusType = UNKNOWN, const std::string& = "")
  enum EndpointQueryingStatusType:
    UNKNOWN, STARTED, FAILED, NOPLUGIN, SUCCESSFUL
  static std::string str(EndpointQueryingStatusType)
  bool operator==(EndpointQueryingStatusType)
  bool operator==(const EndpointQueryingStatus&)
  bool operator!=(EndpointQueryingStatusType)
  bool operator!=(const EndpointQueryingStatus&)
  bool operator!() const
  operator bool() const
  EndpointQueryingStatus& operator=(EndpointQueryingStatusType)
  EndpointQueryingStatus& operator=(const EndpointQueryingStatus&)
  EndpointQueryingStatus getStatus() const
  const std::string& getDescription() const
  std::string str() const
* New template<typename T> class EndpointQueryOptions
  EndpointQueryOptions(std::list<std::string> = std::list<std::string>())
  std::list<std::string>& getPreferredInterfaceNames()
* New template<> class EndpointQueryOptions<Endpoint>
  EndpointQueryOptions(bool = false, const std::list<std::string>& = std::list<std::string>(),
                       const std::list<std::string>& = std::list<std::string>())
  bool recursiveEnabled() const
  const std::list<std::string>& getCapabilityFilter() const
  const std::list<std::string>& getRejectedServices() const
  std::list<std::string>& getPreferredInterfaceNames()
* New template<typename T> class EntityRetrieverPlugin:
  virtual const std::list<std::string>& SupportedInterfaces() const
  virtual bool isEndpointNotSupported(const Endpoint&) const = 0
  virtual EndpointQueryingStatus Query(const UserConfig&, const Endpoint&, std::list<T>&, const EndpointQueryOptions<T>&) const = 0
  static const std::string kind
  (protected) EntityRetrieverPlugin(PluginArgument*)
  (protected) std::list<std::string> supportedInterfaces
* New template<typename T> class EntityRetrieverPluginLoader:
  EntityRetrieverPluginLoader()
  EntityRetrieverPlugin<T>* load(const std::string&)
  static std::list<std::string> getListOfPlugins()
  const std::map<std::string, EntityRetrieverPlugin<T> *>& GetTargetInformationRetrieverPlugins() const
  (protected) std::map<std::string, EntityRetrieverPlugin<T> *> plugins
  (protected) static Logger logger;
* New template<typename T> class EntityConsumer:
  virtual void addEntity(const T&) = 0
* template<typename T> class EntityContainer:
  virtual void addEntity(const T&)
* template<typename T> class EntityRetriever:
  EntityRetriever(const UserConfig&, const EndpointQueryOptions<T>& = EndpointQueryOptions<T>())
  void wait() const
  bool isDone() const
  void addConsumer(EntityConsumer<T>&)
  void removeConsumer(const EntityConsumer<T>&)
  EndpointQueryingStatus getStatusOfEndpoint(const Endpoint&) const;
  bool setStatusOfEndpoint(const Endpoint&, const EndpointQueryingStatus&, bool = true);
  virtual void addEntity(const T&);
  virtual void addEndpoint(const Endpoint&);
  (protected) static void queryEndpoint(void *arg_);
  (protected) class Common:
    Common(EntityRetriever*, const UserConfig&)
    void deactivate()
    bool lockExclusiveIfValid()
    void unlockExclusive()
    bool lockSharedIfValid()
    void unlockShared()
    operator const UserConfig&() const
    const std::list<std::string>& getAvailablePlugins()
    void setAvailablePlugins(const std::list<std::string>&)
    EntityRetriever* operator->()
    EntityRetriever* operator*()
  (protected) ThreadedPointer<Common> common
  (protected) class Result:
    Result(bool = false)
    Result(const Result&)
    void setSuccess()
    bool wait(int = -1) const
  (protected) Result result
  (protected) class ThreadArg:
    ThreadArg(const ThreadedPointer<Common>&, Result&, const Endpoint&, const EndpointQueryOptions<T>&)
    ThreadArg(const ThreadArg&, Result&)
    ThreadedPointer<Common> common
    Result result
    Endpoint endpoint
    std::string pluginName
    EndpointQueryOptions<T> options
  (protected) std::map<Endpoint, EndpointQueryingStatus> statuses
  (protected) static Logger logger
  (protected) const UserConfig& uc
  (protected) std::list< EntityConsumer<T>* > consumers
  (protected) EndpointQueryOptions<T> options
  (protected) mutable SimpleCondition consumerLock
  (protected) mutable SimpleCondition statusLock
  (protected) std::map<std::string, std::string> interfacePluginMap
* New typedef EntityRetriever<Endpoint>             ServiceEndpointRetriever;
* New typedef EntityRetrieverPlugin<Endpoint>       ServiceEndpointRetrieverPlugin
* New typedef EntityRetrieverPluginLoader<Endpoint> ServiceEndpointRetrieverPluginLoader
* New typedef EntityRetriever<ComputingServiceType>             TargetInformationRetriever
* New typedef EntityRetrieverPlugin<ComputingServiceType>       TargetInformationRetrieverPlugin
* New typedef EntityRetrieverPluginLoader<ComputingServiceType> TargetInformationRetrieverPluginLoader
* New typedef EntityRetriever<Job>             JobListRetriever
* New typedef EntityRetrieverPlugin<Job>       JobListRetrieverPlugin
* New typedef EntityRetrieverPluginLoader<Job> JobListRetrieverPluginLoader
* New class Endpoint:
  enum CapabilityEnum:
    REGISTRY, COMPUTINGINFO, JOBLIST, JOBSUBMIT, JOBMANAGEMENT, ANY
  static std::string GetStringForCapability(Endpoint::CapabilityEnum)
  Endpoint(const std::string& = "", const std::list<std::string>& = std::list<std::string>(), const std::string& = "")
  Endpoint(const std::string&, const Endpoint::CapabilityEnum, const std::string& = "")
  Endpoint(const ConfigEndpoint&)
  bool HasCapability(Endpoint::CapabilityEnum) const
  bool HasCapability(std::string) const
  std::string str() const
  bool operator<(const Endpoint&) const
  Endpoint& operator=(const ConfigEndpoint&)
  std::string URLString
  std::string InterfaceName
  std::string HealthState
  std::string HealthStateInfo
  std::string QualityLevel
  std::list<std::string> Capability
  std::string RequestedSubmissionInterfaceName
* class JobDescription:
  Removed: operator bool() const
  Removed: bool Parse(const std::string&, const std::string& = "", const std::string& = "")
  Removed: bool Parse(const XMLNode&);
  Removed: std::string UnParse(const std::string& = "nordugrid:jsdl") const
  Removed: void Print(bool = false) const
  Removed: std::list<FileType> Files
  Changed: static bool                 Parse(const std::string&, std::list<JobDescription>&, const std::string& = "", const std::string& = "")
           static JobDescriptionResult Parse(const std::string&, std::list<JobDescription>&, const std::string& = "", const std::string& = "")
  Changed: bool                 UnParse(std::string&, std::string, const std::string& = "") const
           JobDescriptionResult UnParse(std::string&, std::string, const std::string& = "") const
  Changed: bool                 SaveToStream(std::ostream&, const std::string&) const
           JobDescriptionResult SaveToStream(std::ostream&, const std::string&) const
  Added: DataStagingType DataStaging
  Added: bool Prepare(const ExecutionTarget&)
  Added: static bool GetTestJob(int, JobDescription&)
* New template<class T> class OptIn:
  OptIn<T>()
  OptIn<T>(const T&)
  OptIn<T>(const T&, bool)
  OptIn<T>(const OptIn<T>&)
  OptIn<T>& operator=(const OptIn<T>&)
  OptIn<T>& operator=(const T&)
  operator T() const
  bool optIn
  T v
* class IdentificationType:
  Removed: std::string JobVOName
  Removed: std::list<std::string> UserTag
  Removed: std::list<std::string> ActivityOldId
  Added: std::list<std::string> ActivityOldID
  Added: std::string Type
  Added: std::list<std::string> Annotation
* class ExecutableType:
  Removed: std::string Name
  Added: std::string Path
  Added: std::pair<bool, int> SuccessExitCode
* New class RemoteLoggingType:
  std::string ServiceType
  URL Location
  bool optional
* class ApplicationType:
  Removed: ExecutableType Prologue
  Removed: ExecutableType Epilogue
  Added: std::list<ExecutableType> PreExecutable
  Added: std::list<ExecutableType> PostExecutable
  Changed: std::list<URL>               RemoteLogging
           std::list<RemoteLoggingType> RemoteLogging
  Changed: Time ExpiryTime
           Time ExpirationTime
* Removed class ResourceSlotType:
* New class SlotRequirementType:
  SlotRequirementType()
  int NumberOfSlots
  int SlotsPerHost
  enum ExclusiveExecutionType:
    EE_DEFAULT, EE_TRUE, EE_FALSE
  ExclusiveExecutionType ExclusiveExecution;
* New class ParallelEnvironmentType:
  ParallelEnvironmentType()
  std::string Type
  std::string Version
  int ProcessesPerSlot
  int ThreadsPerProcess
  std::multimap<std::string, std::string> Options
* class ResourcesType:
  Changed: ResourceSlotType    SlotRequirement
           SlotRequirementType SlotRequirement
  Added: ParallelEnvironmentType ParallelEnvironment
  Added: OptIn<std::string> Coprocessor
* New class JobDescriptionResult:
  JobDescriptionResult(bool)
  JobDescriptionResult(bool, const std::string&)
  operator bool(void)
  bool operator!(void)
  const std::string& str(void)
* class JobDescriptionParser:
  Changed: virtual bool                       Parse(const std::string&, std::list<JobDescription>&,
                                                    const std::string& = "", const std::string& = "") const = 0
           virtual JobDescriptionParserResult Parse(const std::string&, std::list<JobDescription>&,
                                                    const std::string& = "", const std::string& = "") const = 0
  Changed: virtual bool                       UnParse(const JobDescription&, std::string&,
                                                      const std::string&, const std::string& = "") const = 0
           virtual JobDescriptionParserResult UnParse(const JobDescription&, std::string&,
                                                      const std::string&, const std::string& = "") const = 0
  Added: const std::string& GetError()
  Changed: (protected) JobDescriptionParser()
           (protected) JobDescriptionParser(PluginArgument*)
  Added: (protected) mutable std::string error
* class JobDescriptionParser::iterator:
  Removed: iterator& operator=(const iterator&)
* New class JobDescriptionParserResult:
  enum Result:
    Success, Failure, WrongLanguage
  JobDescriptionParserResult()
  JobDescriptionParserResult(bool)
  JobDescriptionParserResult(Result)
  operator bool()
  bool operator!()
  bool operator==(bool)
  bool operator==(Result)
* New class DataStagingType:
  Added: DataStagingType()
  Added: std::list<InputFileType> InputFiles
  Added: std::list<OutputFileType> OutputFiles
* Removed class FileType
* New class SourceType:
  SourceType()
  SourceType(const URL&)
  SourceType(const std::string&)
  SourceType& operator=(const URL&)
  SourceType& operator=(const std::string&)
  std::string DelegationID
* New class TargetType:
  TargetType()
  TargetType(const URL& u)
  TargetType(const std::string&)
  std::string DelegationID
  enum CreationFlagEnumeration:
    CFE_DEFAULT, CFE_OVERWRITE, CFE_APPEND, CFE_DONTOVERWRITE
  CreationFlagEnumeration CreationFlag
  bool UseIfFailure
  bool UseIfCancel
  bool UseIfSuccess
* New class InputFileType:
  InputFileType()
  std::string Name
  bool IsExecutable
  long FileSize
  std::string Checksum
  std::list<SourceType> Sources
* New class OutputFileType:
  OutputFileType()
  std::string Name
  std::list<TargetType> Targets
* class JobDescriptionParser:
  Added: const std::string& GetError(void)
  Added: (protected) std::string error

* class Job:
  Removed: void Print(bool) const
  Removed: std::string Flavour
  Removed: URL SubmissionEndpoint
  Removed: URL InfoEndpoint
  Removed: URL ISB
  Removed: URL OSB
  Removed: std::string AuxInfo;
  Removed: std::list<std::string> UsedApplicationEnvironment
  Removed: int UsedSlots
  Changed: static bool CompareJobID(const Job* a, const Job* b);
           static bool CompareJobID(const Job&, const Job&)
  Changed: static bool CompareSubmissionTime(const Job*, const Job*)
           static bool CompareSubmissionTime(const Job&, const Job&)
  Changed  static bool CompareJobName(const Job*, const Job*)
           static bool CompareJobName(const Job&, const Job&)
  Changed: URL IDFromEndpoint
           std::string IDFromEndpoint
  Added: void Update(XMLNode)
  Added: bool GetURLToResource(ResourceType, URL&) const
  Added: bool Retrieve(const UserConfig&, const URL&, bool) const
  Added: static bool CopyJobFile(const UserConfig&, const URL&, const URL&)
  Added: static bool ListFilesRecursive(const UserConfig&, const URL&, std::list<std::string>&, const std::string& = "")
  Added: static bool ReadJobsFromFile(const std::string&, std::list<Job>&, std::list<std::string>&, bool = false,
                                      const std::list<std::string>& = std::list<std::string>(),
                                      const std::list<std::string>& = std::list<std::string>(),
                                      unsigned = 10, unsigned = 500000)
  Added: std::string InterfaceName
  Added: enum ResourceType:
    STDIN, STDOUT, STDERR, STAGEINDIR, STAGEOUTDIR, SESSIONDIR, JOBLOG, JOBDESCRIPTION
* class ExecutionTarget:
  Removed: void Print(bool) const
  Removed: Submitter* GetSubmitter(const UserConfig&) const
  Removed: bool GetTestJob(const UserConfig&, const int&, JobDescription&) const
  Removed: bool Migrate(const UserConfig&, const URL&, const JobDescription&, bool, Job&) const
  Removed: void Update(const JobDescription&)
  Removed: std::string Address
  Removed: std::string Place
  Removed: std::string Country
  Removed: std::string PostCode
  Removed: float Latitude
  Removed: float Longitude
  Removed: std::string DomainName
  Removed: std::string Owner
  Removed: std::string ServiceName
  Removed: std::string ServiceType
  Removed: URL url
  Removed: std::list<std::string> Capability
  Removed: std::string Technology
  Removed: std::string InterfaceName
  Removed: std::list<std::string> InterfaceVersion
  Removed: std::list<std::string> InterfaceExtension
  Removed: std::list<std::string> SupportedProfile
  Removed: std::string Implementor
  Removed: Software Implementation
  Removed: std::string QualityLevel
  Removed: std::string HealthState
  Removed: std::string HealthStateInfo
  Removed: std::string ServingState
  Removed: std::string IssuerCA
  Removed: std::list<std::string> TrustedCA
  Removed: Time DowntimeStarts
  Removed: Time DowntimeEnds
  Removed: std::string Staging
  Removed: std::list<std::string> JobDescriptions
  Removed: std::string ComputingShareName
  Removed: std::string MappingQueue
  Removed: Period MaxWallTime
  Removed: Period MaxTotalWallTime
  Removed: Period MinWallTime
  Removed: Period DefaultWallTime
  Removed: Period MaxCPUTime
  Removed: Period MaxTotalCPUTime
  Removed: Period MinCPUTime
  Removed: Period DefaultCPUTime
  Removed: int MaxTotalJobs
  Removed: int MaxRunningJobs
  Removed: int MaxWaitingJobs
  Removed: int MaxPreLRMSWaitingJobs
  Removed: int MaxUserRunningJobs
  Removed: int MaxSlotsPerJob
  Removed: int MaxStageInStreams
  Removed: int MaxStageOutStreams
  Removed: std::string SchedulingPolicy
  Removed: int MaxMainMemory
  Removed: int MaxVirtualMemory
  Removed: int MaxDiskSpace
  Removed: URL DefaultStorageService
  Removed: bool Preemption
  Removed: int TotalJobs
  Removed: int RunningJobs
  Removed: int LocalRunningJobs
  Removed: int WaitingJobs
  Removed: int LocalWaitingJobs
  Removed: int SuspendedJobs
  Removed: int LocalSuspendedJobs
  Removed: int StagingJobs
  Removed: int PreLRMSWaitingJobs
  Removed: Period EstimatedAverageWaitingTime
  Removed: Period EstimatedWorstWaitingTime
  Removed: int FreeSlots
  Removed: std::map<Period, int> FreeSlotsWithDuration
  Removed: int UsedSlots
  Removed: int RequestedSlots
  Removed: std::string ReservationPolicy
  Removed: std::string ManagerProductName
  Removed: std::string ManagerProductVersion
  Removed: bool Reservation
  Removed: bool BulkSubmission
  Removed: int TotalPhysicalCPUs
  Removed: int TotalLogicalCPUs
  Removed: int TotalSlots
  Removed: bool Homogeneous
  Removed: std::list<std::string> NetworkInfo
  Removed: bool WorkingAreaShared
  Removed: int WorkingAreaTotal
  Removed: int WorkingAreaFree
  Removed: Period WorkingAreaLifeTime
  Removed: int CacheTotal
  Removed: int CacheFree
  Removed: std::map<std::string, double> Benchmarks
  Removed: std::string Platform
  Removed: bool VirtualMachine
  Removed: std::string CPUVendor
  Removed: std::string CPUModel
  Removed: std::string CPUVersion
  Removed: int CPUClockSpeed
  Removed: int MainMemorySize
  Removed: Software OperatingSystem
  Removed: bool ConnectivityIn
  Removed: bool ConnectivityOut
  Removed: std::list<ApplicationEnvironment> ApplicationEnvironments
  Removed: std::string GridFlavour
  Removed: URL Cluster
  Added: void RegisterJobSubmission(const JobDescription&) const
  Added: static void GetExecutionTargets(const std::list<ComputingServiceType>&, std::list<ExecutionTarget>&)
  Added: ExecutionTarget(const CountedPointer<LocationAttributes>&, const CountedPointer<AdminDomainAttributes>&,
                         const CountedPointer<ComputingServiceAttributes>&, const CountedPointer<ComputingEndpointAttributes>&,
                         const CountedPointer<ComputingShareAttributes>&, const CountedPointer<ComputingManagerAttributes>&,
                         const CountedPointer<ExecutionEnvironmentAttributes>&, const CountedPointer< std::map<std::string, double> >&,
                         const CountedPointer< std::list<ApplicationEnvironment> >&)
  Added: CountedPointer<LocationAttributes> Location
  Added: CountedPointer<AdminDomainAttributes> AdminDomain
  Added: CountedPointer<ComputingServiceAttributes> ComputingService
  Added: CountedPointer<ComputingEndpointAttributes> ComputingEndpoint
  Added: CountedPointer<ComputingShareAttributes> ComputingShare
  Added: CountedPointer<ComputingManagerAttributes> ComputingManager
  Added: CountedPointer<ExecutionEnvironmentAttributes> ExecutionEnvironment
  Added: CountedPointer< std::map<std::string, double> > Benchmarks
  Added: CountedPointer< std::list<ApplicationEnvironment> > ApplicationEnvironments
* New class LocationAttributes:
  LocationAttributes()
  std::string Address
  std::string Place
  std::string Country
  std::string PostCode
  float Latitude
  float Longitude
* New class AdminDomainAttributes:
  std::string Name
  std::string Owner
* New class ExecutionEnvironmentAttributes:
  ExecutionEnvironmentAttributes()
  std::string ID
  std::string Platform
  bool VirtualMachine
  std::string CPUVendor
  std::string CPUModel
  std::string CPUVersion
  int CPUClockSpeed
  int MainMemorySize
  Software OperatingSystem
  bool ConnectivityIn
  bool ConnectivityOut
* New class ComputingManagerAttributes:
  ComputingManagerAttributes()
  std::string ID
  std::string ProductName
  std::string ProductVersion
  bool Reservation
  bool BulkSubmission
  int TotalPhysicalCPUs
  int TotalLogicalCPUs
  int TotalSlots
  bool Homogeneous
  std::list<std::string> NetworkInfo
  bool WorkingAreaShared
  int WorkingAreaTotal
  int WorkingAreaFree
  Period WorkingAreaLifeTime
  int CacheTotal
  int CacheFree
* New class ComputingShareAttributes:
  ComputingShareAttributes()
  std::string ID
  std::string Name
  std::string MappingQueue
  Period MaxWallTime
  Period MaxTotalWallTime
  Period MinWallTime
  Period DefaultWallTime
  Period MaxCPUTime
  Period MaxTotalCPUTime
  Period MinCPUTime
  Period DefaultCPUTime
  int MaxTotalJobs
  int MaxRunningJobs
  int MaxWaitingJobs
  int MaxPreLRMSWaitingJobs
  int MaxUserRunningJobs
  int MaxSlotsPerJob
  int MaxStageInStreams
  int MaxStageOutStreams
  std::string SchedulingPolicy
  int MaxMainMemory
  int MaxVirtualMemory
  int MaxDiskSpace
  URL DefaultStorageService
  bool Preemption
  int TotalJobs
  int RunningJobs
  int LocalRunningJobs
  int WaitingJobs
  int LocalWaitingJobs
  int SuspendedJobs
  int LocalSuspendedJobs
  int StagingJobs
  int PreLRMSWaitingJobs
  Period EstimatedAverageWaitingTime
  Period EstimatedWorstWaitingTime
  int FreeSlots
  std::map<Period, int> FreeSlotsWithDuration
  int UsedSlots
  int RequestedSlots
  std::string ReservationPolicy
* New class ComputingEndpointAttributes:
  ComputingEndpointAttributes()
  std::string ID
  std::string URLString
  std::string InterfaceName
  std::string HealthState
  std::string HealthStateInfo
  std::string QualityLevel
  std::list<std::string> Capability
  std::string Technology
  std::list<std::string> InterfaceVersion
  std::list<std::string> InterfaceExtension
  std::list<std::string> SupportedProfile
  std::string Implementor
  Software Implementation
  std::string ServingState
  std::string IssuerCA
  std::list<std::string> TrustedCA
  Time DowntimeStarts
  Time DowntimeEnds
  std::string Staging
  int TotalJobs
  int RunningJobs
  int WaitingJobs
  int StagingJobs
  int SuspendedJobs
  int PreLRMSWaitingJobs
  std::list<std::string> JobDescriptions
* New class ComputingServiceAttributes:
  ComputingServiceAttributes()
  std::string ID
  std::string Name
  std::string Type
  std::list<std::string> Capability
  std::string QualityLevel
  int TotalJobs
  int RunningJobs
  int WaitingJobs
  int StagingJobs
  int SuspendedJobs
  int PreLRMSWaitingJobs
  URL Cluster
  Endpoint OriginalEndpoint
* New template<typename T> class GLUE2Entity:
  GLUE2Entity()
  T       *       operator->()
  T const * const operator->() const
  T       &       operator*()
  T const &       operator*()  const
  CountedPointer<T> Attributes
* New class LocationType : public GLUE2Entity<LocationAttributes>
* New class AdminDomainType : public GLUE2Entity<AdminDomainAttributes>
* New class ExecutionEnvironmentType : public GLUE2Entity<ExecutionEnvironmentAttributes>
* New class ComputingManagerType : public GLUE2Entity<ComputingManagerAttributes>:
  ComputingManagerType()
  std::map<int, ExecutionEnvironmentType> ExecutionEnvironment
  CountedPointer< std::map<std::string, double> > Benchmarks
  CountedPointer< std::list<ApplicationEnvironment> > ApplicationEnvironments
* New class ComputingShareType : public GLUE2Entity<ComputingShareAttributes>:
  std::set<int> ComputingEndpointIDs
* New class ComputingEndpointType : public GLUE2Entity<ComputingEndpointAttributes>:
  std::set<int> ComputingShareIDs
* New class ComputingServiceType : public GLUE2Entity<ComputingServiceAttributes>:
  template<typename T> void GetExecutionTargets(T&) const
  LocationType Location
  AdminDomainType AdminDomain
  std::map<int, ComputingEndpointType> ComputingEndpoint
  std::map<int, ComputingShareType> ComputingShare
  std::map<int, ComputingManagerType> ComputingManager
* class Software:
  Added: const std::list<std::string>& getOptions() const
  Added: void addOption(const std::string&)
* class SoftwareRequirement:
  Changed: void add(const Software&, Software::ComparisonOperator = &Software::operator==)
           void add(const Software&, Software::ComparisonOperator)
* class JobState:
  Added: (protected) std::string state
  Added: (protected) StateType type
* class GLUE2:
  Changed static void ParseExecutionTargets(XMLNode, std::list<ExecutionTarget>&, const std::string& = "")
          static void ParseExecutionTargets(XMLNode, std::list<ComputingServiceType>& targets)
* New class ComputingServiceRetriever:
  ComputingServiceRetriever
  void wait()
  void addEndpoint(const Endpoint&)
  void addEntity(const Endpoint&)
  void addConsumer(EntityConsumer<ComputingServiceType>&)
  void removeConsumer(const EntityConsumer<ComputingServiceType>&)
  void GetExecutionTargets(std::list<ExecutionTarget>&)
* New class BrokerPluginTestACCControl:
  static bool match
  static bool less
* New class JobDescriptionParserTestACCControl:
  static bool parseStatus
  static bool unparseStatus
  static std::list<JobDescription> parsedJobDescriptions
  static std::string unparsedString
* New class JobControllerPluginTestACCControl:
  static bool cleanStatus
  static bool cancelStatus
  static bool renewStatus
  static bool resumeStatus
  static bool getJobDescriptionStatus
  static std::string getJobDescriptionString
  static bool resourceExist
  static URL resourceURL
  static URL createURL
* New class SubmitterPluginTestACCControl:
  static bool submitStatus
  static bool migrateStatus
  static bool modifyStatus
  static Job submitJob
  static Job migrateJob
* New class JobStateTEST:
  JobStateTEST(JobState::StateType, const std::string& = "TestState")
* New class JobListRetrieverPluginTESTControl:
  static float delay
  static std::list<Job> jobs
  static EndpointQueryingStatus status
* New class ServiceEndpointRetrieverPluginTESTControl:
  static float delay
  static EndpointQueryingStatus status
  static std::list<Endpoint> endpoints
* New class TargetInformationRetrieverPluginTESTControl:
  static float delay
  static std::list<ComputingServiceType> targets
  static EndpointQueryingStatus status

libarcloader

* Renamed class: LoadableModuleDesciption
                 LoadableModuleDescription
* class LoadableModuleDescription:
  Added: operator bool()
  Added: bool operator!()
  Added: int use()
  Added: int unuse()
  Added: int usage()
* class Loader:
  Removed: Loader(const Loader&)
  Removed: Loader& operator=(const Loader&)
* class ModuleManager:
  Changed:             void unload(Glib::Module*)
           (protected) void unload(Glib::Module*)
  Changed:             void unload(const std::string&)
           (protected) void unload(const std::string&)
  Changed: Glib::Module* load(const std::string&, bool = false)
           Glib::Module* load(const std::string&, bool)
  Added: void use(Glib::Module*)
  Added: void unuse(Glib::Module*)
* class Plugin:
  Removed: (protected) Plugin()
  Removed: Plugin& operator=(const Plugin&)
  Added: (protected) PluginsFactory* factory_
  Added: (protected) Glib::Module* module_
  Added: (protected) Plugin(PluginArgument*)
  Added: (protected) Plugin(const Plugin&)
* class PluginsFactory:
  Changed: void TryLoad(bool = true)
           void TryLoad(bool)

libarcdata2

* class FileCache:
  Changed: FileCache(const std::vector<std::string>&, const std::vector<std::string>&,
                     const std::vector<std::string>&, const std::string&, uid_t, gid_t, int = 100, int = 100)
           FileCache(const std::vector<std::string>&, const std::vector<std::string>&,
                     const std::vector<std::string>&, const std::string&, uid_t, gid_t)
  Removed: bool Copy(const std::string&, const std::string&, bool = false)
  Changed: bool Start(const std::string&, bool&, bool&, bool = true              )
           bool Start(const std::string&, bool&, bool&, bool = true, bool = false)
  Changed: bool Link(const std::string&, const std::string&, bool, bool             )
           bool Link(const std::string&, const std::string&, bool, bool, bool, bool&)
* class FileInfo:
  Added: operator bool() const
  Added: bool operator!() const
* class DataStatus:
  enum DataStatusType:
    Changed: SuccessCached = 38
             SuccessCached = 39
    Changed: GenericError = 39
             GenericError = 40
    Changed: UnknownError = 40
             UnknownError = 41
    Added: CreateDirectoryError = 38
    Added: CreateDirectoryErrorRetryable = DataStatusRetryableBase+CreateDirectoryError
* class DataPoint:
  Changed: (protected) std::list<std::string> valid_url_options
           (protected) std::set<std::string>  valid_url_options
  Added: virtual DataStatus CreateDirectory(bool = false)
  Added: virtual void AddURLOptions(const std::map<std::string, std::string>&)
  Added: virtual DataStatus Stat(std::list<FileInfo>&, const std::list<DataPoint*>&, DataPointInfoType = INFO_TYPE_ALL) = 0
  Added: virtual DataStatus Resolve(bool, const std::list<DataPoint*>&) = 0
  Added: virtual DataPoint* CurrentLocationHandle() const = 0
  Changed: (protected) DataPoint(const URL&, const UserConfig&)
           (protected) DataPoint(const URL&, const UserConfig&, PluginArgument*)
* class DataPointDirect:
  Added: virtual DataStatus Stat(std::list<FileInfo>&, const std::list<DataPoint*>&, DataPointInfoType = INFO_TYPE_ALL)
  Added: virtual DataStatus Resolve(bool, const std::list<DataPoint*>&)
  Added: virtual DataPoint* CurrentLocationHandle() const
  Changed: (protected) DataPointDirect(const URL&, const UserConfig&)
           (protected) DataPointDirect(const URL&, const UserConfig&, PluginArgument*)
* class DataPointIndex:
  Added: virtual DataPoint* CurrentLocationHandle() const
  Changed: (protected) DataPointIndex(const URL&, const UserConfig&)
           (protected) DataPointIndex(const URL&, const UserConfig&, PluginArgument*)
* class DataHandle:
  Added: static DataPoint* GetPoint(const URL&, const UserConfig&)

libarccredential

* class Credential:
  Renamed: getFormat    (BIO *, const bool = true) const
           getFormat_BIO(BIO *, const bool = true) const
  Added: Credformat getFormat_str(const std::string&) const
* New class AuthN::PrivateKeyInfoCodec
  static const unsigned char kRsaAlgorithmIdentifier[]
  static const unsigned char kIntegerTag     = 0x02
  static const unsigned char kBitStringTag   = 0x03
  static const unsigned char kOctetStringTag = 0x04
  static const unsigned char kNullTag        = 0x05
  static const unsigned char kSequenceTag    = 0x30
  explicit PrivateKeyInfoCodec(bool)
  bool Export(std::vector<unsigned char>*)
  bool ExportPublicKeyInfo(std::vector<unsigned char>*);
  bool ExportPublicKey(std::vector<unsigned char>*);
  bool Import(const std::vector<unsigned char>&)
  std::vector<unsigned char>* modulus()
  std::vector<unsigned char>* public_exponent()
  std::vector<unsigned char>* private_exponent()
  std::vector<unsigned char>* prime1()
  std::vector<unsigned char>* prime2()
  std::vector<unsigned char>* exponent1()
  std::vector<unsigned char>* exponent2()
  std::vector<unsigned char>* coefficient()
* Functions:
  Added: bool AuthN::nssInit(const std::string&)
  Added: bool AuthN::nssExportCertificate(const std::string&, const std::string&)
  Added: bool AuthN::nssOutputPKCS12(const std::string, char*, char*, char*)
  Added: bool AuthN::nssGenerateCSR(const std::string&, const std::string&, const char*, const std::string&, std::string&, bool = true)
  Added: bool AuthN::nssCreateCert(const std::string&, const std::string&, const char*, const int, std::string&, bool = true)
  Added: bool AuthN::nssImportCertAndPrivateKey(char*, const std::string&, const std::string&, const std::string&,
                                                const std::string&, const char* = NULL, bool = true)
  Added: bool AuthN::nssImportCert(char*, const std::string&, const std::string&, const char* = NULL, bool = true)
  Changed: bool parseVOMSAC(X509*, const std::string&, const std::string&,
                            VOMSTrustList&, std::vector<VOMSACInfo>&, bool = true, bool = false)
           bool parseVOMSAC(X509*, const std::string&, const std::string&, const std::string&,
                            VOMSTrustList&, std::vector<VOMSACInfo>&, bool = true, bool = false)
  Changed: bool parseVOMSAC(const Credential&, const std::string&, const std::string&,
                            VOMSTrustList&, std::vector<VOMSACInfo>&, bool = true, bool = false)
           bool parseVOMSAC(const Credential&, const std::string&, const std::string&, const std::string&,
                            VOMSTrustList&, std::vector<VOMSACInfo>&, bool = true, bool = false)
  Changed: std::string getCredentialProperty(const Credential&, const std::string&, const std::string& = "",
                                             const std::string& = "", const std::vector<std::string>& = std::vector<std::string>())
           std::string getCredentialProperty(const Credential&, const std::string&, const std::string& = "", const std::string& = "",
                                             const std::string& = "", const std::vector<std::string>& = std::vector<std::string>());


libarcdelegation

* class Arc::DelegationContainerSOAP:
  Added: (protected) typedef std::map<std::string, Consumer> ConsumerMap
  Added: (protected) typedef ConsumerMap::iterator ConsumerIterator
  Added: (protected) ConsumerMap consumers_
  Added: (protected) ConsumerIterator consumers_first_
  Added: (protected) ConsumerIterator consumers_last_
  Added: (protected) ConsumerIterator find(DelegationConsumerSOAP*)
  Added: (protected) bool remove(ConsumerIterator)
  Added: (protected) virtual DelegationConsumerSOAP* AddConsumer(std::string&, const std::string&)
  Added: (protected) virtual DelegationConsumerSOAP* FindConsumer(const std::string& id, const std::string& client);
  Added: (protected) virtual bool TouchConsumer(DelegationConsumerSOAP*, const std::string&)
  Added: (protected) virtual bool QueryConsumer(DelegationConsumerSOAP*, std::string&);
  Added: (protected) virtual void ReleaseConsumer(DelegationConsumerSOAP*)
  Added: (protected) virtual void RemoveConsumer(DelegationConsumerSOAP*)
  Added: (protected) virtual void CheckConsumers()

libarcsecurity

* class Evaluator:
  Changed: Evaluator (XMLNode*)
           Evaluator (XMLNode*, PluginArgument*)
  Changed: Evaluator (const char *)
           Evaluator (const char *, PluginArgument*)
* class Policy:
  Changed: Policy()
           Policy(PluginArgument*)
  Changed: Policy(const XMLNode) 
           Policy(const XMLNode, PluginArgument*)
  Changed: Policy(const XMLNode, EvaluatorContext*)
           Policy(const XMLNode, EvaluatorContext*, PluginArgument*)
* class FnFactory:
  Changed: FnFactory()
           FnFactory(PluginArgument*)
* class AlgFactory:
  Changed: AlgFactory()
           AlgFactory(PluginArgument*)
* class AttributeFactory:
  Changed: AttributeFactory()
           AttributeFactory(PluginArgument*)
* class Request:
  Changed: Request()
           Request(PluginArgument*)
  Changed: Request(const Source&)
           Request(const Source&, PluginArgument*)
* class PDP:
  Changed: PDP(Config*)
           PDP(Config*, PluginArgument*)

libarcmessage

* class MCC:
  Changed: MCC(Config *)
           MCC(Config *, PluginArgument*)
* class MCCInterface:
  Added: MCCInterface(PluginArgument*)
* class Plexer:
  Changed: Plexer(Config *)
           Plexer(Config *, PluginArgument*)
* class SecHandler:
  Changed: SecHandler(Config*)
           SecHandler(Config*, PluginArgument*)
* class Service:
  Added: (protected) bool valid
  Added: operator bool() const
  Added: bool operator!() const
  Changed: Service(Config*)
           Service(Config*, PluginArgument*)

libarcinfosys

* class InfoRegisters:
  Changed: InfoRegisters(XMLNode &, Service *)
           InfoRegisters(XMLNode  , Service *)
  Added: bool addRegister(XMLNode, Service *)
* class RegisteredService:
  Changed: RegisteredService(Config*)
           RegisteredService(Config*, PluginArgument*)

libarcdatastaging

libarcdatastaging is a new library in ARC 2.0.0 using namespace DataStaging.