extensions/updater/Updater.h
author Asher Baker <asherkin@gmail.com>
Wed Aug 22 23:23:31 2012 +0100 (2012-08-22)
changeset 3623 3fd87cb487f8
parent 2633 dff17e9ffd0e
permissions -rw-r--r--
Updated cstrike gamedata.
     1 /**
     2  * vim: set ts=4 :
     3  * =============================================================================
     4  * SourceMod Updater Extension
     5  * Copyright (C) 2004-2009 AlliedModders LLC.  All rights reserved.
     6  * =============================================================================
     7  *
     8  * This program is free software; you can redistribute it and/or modify it under
     9  * the terms of the GNU General Public License, version 3.0, as published by the
    10  * Free Software Foundation.
    11  * 
    12  * This program is distributed in the hope that it will be useful, but WITHOUT
    13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    14  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
    15  * details.
    16  *
    17  * You should have received a copy of the GNU General Public License along with
    18  * this program.  If not, see <http://www.gnu.org/licenses/>.
    19  *
    20  * As a special exception, AlliedModders LLC gives you permission to link the
    21  * code of this program (as well as its derivative works) to "Half-Life 2," the
    22  * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
    23  * by the Valve Corporation.  You must obey the GNU General Public License in
    24  * all respects for all other code used.  Additionally, AlliedModders LLC grants
    25  * this exception to all derivative works.  AlliedModders LLC defines further
    26  * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
    27  * or <http://www.sourcemod.net/license.php>.
    28  *
    29  * Version: $Id$
    30  */
    31 
    32 #ifndef _INCLUDE_SOURCEMOD_UPDATER_H_
    33 #define _INCLUDE_SOURCEMOD_UPDATER_H_
    34 
    35 #include <IWebternet.h>
    36 #include <ITextParsers.h>
    37 #include <sh_string.h>
    38 #include "MemoryDownloader.h"
    39 
    40 using namespace SourceHook;
    41 
    42 struct UpdatePart
    43 {
    44 	UpdatePart* next;
    45 	char *file;
    46 	char *data;
    47 	size_t length;
    48 };
    49 
    50 namespace SourceMod
    51 {
    52 	class UpdateReader : 
    53 		public ITextListener_SMC
    54 	{
    55 	public:
    56 		UpdateReader();
    57 		~UpdateReader();
    58 	public: /* ITextListener_SMC */
    59 		void ReadSMC_ParseStart();
    60 		SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name);
    61 		SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
    62 		SMCResult ReadSMC_LeavingSection(const SMCStates *states);
    63 	public:
    64 		void PerformUpdate(const char *url);
    65 		UpdatePart *DetachParts();
    66 	private:
    67 		void HandleFile();
    68 		void HandleFolder(const char *folder);
    69 		void LinkPart(UpdatePart *part);
    70 	private:
    71 		IWebTransfer *xfer;
    72 		MemoryDownloader mdl;
    73 		unsigned int ustate;
    74 		unsigned int ignoreLevel;
    75 		SourceHook::String curfile;
    76 		SourceHook::String url;
    77 		char checksum[33];
    78 		UpdatePart *partFirst;
    79 		UpdatePart *partLast;
    80 		const char *update_url;
    81 	};
    82 }
    83 
    84 #endif /* _INCLUDE_SOURCEMOD_UPDATER_H_ */
    85