versadac  1
versadac - Scalable Recorder Firmware
upgradeReader.h
1 /*******************************************************************************
2 FILE : upgradeReader.h
3 VERSION : $Id$
4 AUTHOR : David Cozens
5 SYSTEM : vxWorks
6 DESCRIPTION : class definition for CUpgradeReader.
7  The CUpgradeReader class provides a table driven C++ wrapper around
8  standard expat reader. It can read gzipped or plain XML upgrae files,
9  the table data is processed by the zippedXmlReader code and the
10  handlers in this class verify the content of the upgarde, if all is
11  OK perform the upgrade and then verify the result.
12 *******************************************************************************/
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif /*__cplusplus */
17 STATUS upgradeRead(char *filename, void(*errorReporter)(char*));
18 #ifdef __cplusplus
19 
21 
22 class CUpgradeReader
23 {
24 public:
25  CUpgradeReader(void(*errorReporter)(char*));
26  virtual ~CUpgradeReader();
27 
28  static signed short read(char* z_filename, void(*errorReporter)(char*));
29 
30  /* Handlers for specific tags. Due to the use of the table driven */
31  /* nature of this parser no checking is required, the element name */
32  /* and context can be assumed to be correct on entry. */
33  static void upgradeEndHandler(void *data, const char *elementName);
34  static void copyStartHandler(void *data, const char *elementName, const char **attr);
35  static void mkdirStartHandler(void *data, const char *elementName, const char **attr);
36  static void removeStartHandler(void *data, const char *elementName, const char **attr);
37  static void formatStartHandler(void *data, const char *elementName, const char **attr);
38  static void checkVersionStartHandler(void *data, const char *elementName, const char **attr);
39 
40  /* Handlers for specific element content. Due to the use of the table driven */
41  /* nature of this parser no checking is required, the element name */
42  /* and context can be assumed to be correct on entry. */
43  static void sourceCharacterDataHandler (void *data, const char *s, int len);
44  static void destCharacterDataHandler (void *data, const char *s, int len);
45  static void md5CharacterDataHandler (void *data, const char *s, int len);
46  static void mkdirCharacterDataHandler (void *data, const char *s, int len);
47  static void removeCharacterDataHandler (void *data, const char *s, int len);
48  static void formatCharacterDataHandler (void *data, const char *s, int len);
49  static void newAppVersionCharacterDataHandler (void *data, const char *s, int len);
50  static void newBootromVersionCharacterDataHandler (void *data, const char *s, int len);
51  static void compatibleAppsCharacterDataHandler (void *data, const char *s, int len);
52  static void compatibleBootromsCharacterDataHandler (void *data, const char *s, int len);
53  static void compatibleHardwareCharacterDataHandler (void *data, const char *s, int len);
54 
55  /* handlers for error cases */
56  static void unexpectedElementHandler(void *userData, const char *elementName);
57  static void parseErrorHandler(void *data, const char *z_errorString, int z_line);
58 private:
59  CUpgradeInstruction* m_instructionListHead;
60  CUpgradeInstruction* m_instructionListTail;
61  void(*m_errorReporter)(char*);
62 };
63 
64 };
65 #endif /* __cplusplus */
Definition: upgradeReader.cpp:120