summaryrefslogtreecommitdiff
path: root/src/MetalinkParserStateMachine.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-25 14:40:18 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-25 14:40:18 +0000
commit3880a5f71b1ffde3779b3cad3519e150341bfda7 (patch)
tree2d6de19d1a5c042610796a7d4b63783c77c2faf3 /src/MetalinkParserStateMachine.h
parentfa6fd758afc1dea263a43c3e21ed7b1b8ad0773c (diff)
2010-02-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added Metalink4 support. Currently, name attribute of metalink::metaurl is ignored and multi-file torrent cannot be used with Metalink4. * doc/aria2c.1.txt * src/DownloadHandlerConstants.cc * src/ExpatMetalinkProcessor.cc * src/Makefile.am * src/Metalink2RequestGroup.cc * src/MetalinkEntry.cc * src/MetalinkEntry.h * src/MetalinkParserController.cc * src/MetalinkParserController.h * src/MetalinkParserState.h * src/MetalinkParserStateImpl.cc * src/MetalinkParserStateImpl.h * src/MetalinkParserStateMachine.cc * src/MetalinkParserStateMachine.h * src/MetalinkParserStateV3Impl.cc * src/MetalinkParserStateV3Impl.h * src/MetalinkParserStateV4Impl.cc * src/MetalinkParserStateV4Impl.h * src/MetalinkResource.cc * src/MetalinkResource.h * src/Metalinker.cc * src/RequestGroup.cc * src/RequestGroup.h * src/XML2SAXMetalinkProcessor.cc * src/messageDigest.cc * src/util.cc * src/util.h * test/Makefile.am * test/MetalinkEntryTest.cc * test/MetalinkParserControllerTest.cc * test/MetalinkProcessorTest.cc * test/MetalinkerTest.cc * test/UtilTest.cc * test/metalink4-attrs.xml * test/metalink4-dirtraversal.xml * test/metalink4.xml
Diffstat (limited to 'src/MetalinkParserStateMachine.h')
-rw-r--r--src/MetalinkParserStateMachine.h101
1 files changed, 74 insertions, 27 deletions
diff --git a/src/MetalinkParserStateMachine.h b/src/MetalinkParserStateMachine.h
index bac78d46..d761bfd4 100644
--- a/src/MetalinkParserStateMachine.h
+++ b/src/MetalinkParserStateMachine.h
@@ -37,15 +37,15 @@
#include "common.h"
#include <string>
-#include <map>
+#include <vector>
#include <stack>
#include "SharedHandle.h"
#include "MetalinkParserController.h"
+#include "MetalinkParserState.h"
namespace aria2 {
-class MetalinkParserState;
class Metalinker;
class MetalinkParserStateMachine {
@@ -55,27 +55,44 @@ private:
std::stack<MetalinkParserState*> _stateStack;
static MetalinkParserState* _initialState;
+ static MetalinkParserState* _skipTagState;
+
+ // Metalink3
static MetalinkParserState* _metalinkState;
- static MetalinkParserState* _filesState;
+ static MetalinkParserState* _filesState; // Metalink3Spec
static MetalinkParserState* _fileState;
static MetalinkParserState* _sizeState;
static MetalinkParserState* _versionState;
static MetalinkParserState* _languageState;
static MetalinkParserState* _osState;
- static MetalinkParserState* _verificationState;
+ static MetalinkParserState* _verificationState; // Metalink3Spec
static MetalinkParserState* _hashState;
- static MetalinkParserState* _piecesState;
- static MetalinkParserState* _pieceHashState;
+ static MetalinkParserState* _piecesState; // Metalink3Spec
+ static MetalinkParserState* _pieceHashState; // Metalink3Spec
static MetalinkParserState* _signatureState;
- static MetalinkParserState* _resourcesState;
+ static MetalinkParserState* _resourcesState; // Metalink3Spec
static MetalinkParserState* _urlState;
- static MetalinkParserState* _skipTagState;
+
+ // Metalink4
+ static MetalinkParserState* _metalinkStateV4;
+ static MetalinkParserState* _fileStateV4;
+ static MetalinkParserState* _sizeStateV4;
+ static MetalinkParserState* _versionStateV4;
+ static MetalinkParserState* _languageStateV4;
+ static MetalinkParserState* _osStateV4;
+ static MetalinkParserState* _hashStateV4;
+ static MetalinkParserState* _piecesStateV4; // Metalink4Spec
+ static MetalinkParserState* _pieceHashStateV4; // Metalink4Spec
+ static MetalinkParserState* _signatureStateV4;
+ static MetalinkParserState* _urlStateV4;
public:
MetalinkParserStateMachine();
+ void setSkipTagState();
+
void setMetalinkState();
- void setFilesState();
+ void setFilesState(); // Metalink3Spec
void setFileState();
@@ -87,28 +104,46 @@ public:
void setOSState();
- void setVerificationState();
+ void setVerificationState(); // Metalink3Spec
void setHashState();
- void setPiecesState();
+ void setPiecesState(); // Metalink3Spec
- void setPieceHashState();
+ void setPieceHashState(); // Metalink3Spec
void setSignatureState();
- void setResourcesState();
+ void setResourcesState(); // Metalink3Spec
void setURLState();
- void setSkipTagState();
+ // Metalink4
+ void setMetalinkStateV4();
+ void setFileStateV4();
+ void setSizeStateV4();
+ void setVersionStateV4();
+ void setLanguageStateV4();
+ void setOSStateV4();
+ void setHashStateV4();
+ void setPiecesStateV4(); // Metalink4Spec
+ void setPieceHashStateV4(); // Metalink4Spec
+ void setSignatureStateV4();
+ void setURLStateV4();
bool finished() const;
void beginElement
- (const std::string& name, const std::map<std::string, std::string>& attrs);
+ (const std::string& localname,
+ const std::string& prefix,
+ const std::string& nsUri,
+ const std::vector<XmlAttr>& attrs);
- void endElement(const std::string& name, const std::string& characters);
+ void endElement
+ (const std::string& localname,
+ const std::string& prefix,
+ const std::string& nsUri,
+ const std::string& characters);
void newEntryTransaction();
@@ -122,7 +157,7 @@ public:
void setOSOfEntry(const std::string& os);
- void setMaxConnectionsOfEntry(int maxConnections);
+ void setMaxConnectionsOfEntry(int maxConnections); // Metalink3Spec
void commitEntryTransaction();
@@ -134,9 +169,9 @@ public:
void setLocationOfResource(const std::string& location);
- void setPreferenceOfResource(int preference);
+ void setPriorityOfResource(int priority);
- void setMaxConnectionsOfResource(int maxConnections);
+ void setMaxConnectionsOfResource(int maxConnections); // Metalink3Spec
void commitResourceTransaction();
@@ -152,21 +187,33 @@ public:
void cancelChecksumTransaction();
- void newChunkChecksumTransaction();
+ void newChunkChecksumTransactionV4(); // Metalink4Spec
+
+ void setLengthOfChunkChecksumV4(size_t length); // Metalink4Spec
+
+ void setTypeOfChunkChecksumV4(const std::string& type); // Metalink4Spec
+
+ void addHashOfChunkChecksumV4(const std::string& md); // Metalink4Spec
+
+ void commitChunkChecksumTransactionV4(); // Metalink4Spec
+
+ void cancelChunkChecksumTransactionV4(); // Metalink4Spec
+
+ void newChunkChecksumTransaction(); // Metalink3Spec
- void setLengthOfChunkChecksum(size_t length);
+ void setLengthOfChunkChecksum(size_t length); // Metalink3Spec
- void setTypeOfChunkChecksum(const std::string& type);
+ void setTypeOfChunkChecksum(const std::string& type); // Metalink3Spec
- void createNewHashOfChunkChecksum(size_t order);
+ void createNewHashOfChunkChecksum(size_t order); // Metalink3Spec
- void setMessageDigestOfChunkChecksum(const std::string& md);
+ void setMessageDigestOfChunkChecksum(const std::string& md); // Metalink3Spec
- void addHashOfChunkChecksum();
+ void addHashOfChunkChecksum(); // Metalink3Spec
- void commitChunkChecksumTransaction();
+ void commitChunkChecksumTransaction(); // Metalink3Spec
- void cancelChunkChecksumTransaction();
+ void cancelChunkChecksumTransaction(); // Metalink3Spec
void newSignatureTransaction();