Version of http://mbed.org/cookbook/NetServicesTribute with setting set the same for LPC2368

Dependents:   UDPSocketExample 24LCxx_I2CApp WeatherPlatform_pachube HvZServerLib ... more

Committer:
simon
Date:
Tue Nov 23 14:15:36 2010 +0000
Revision:
0:350011bf8be7
Experimental version for testing UDP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:350011bf8be7 1
simon 0:350011bf8be7 2 /*
simon 0:350011bf8be7 3 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
simon 0:350011bf8be7 4
simon 0:350011bf8be7 5 Permission is hereby granted, free of charge, to any person obtaining a copy
simon 0:350011bf8be7 6 of this software and associated documentation files (the "Software"), to deal
simon 0:350011bf8be7 7 in the Software without restriction, including without limitation the rights
simon 0:350011bf8be7 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
simon 0:350011bf8be7 9 copies of the Software, and to permit persons to whom the Software is
simon 0:350011bf8be7 10 furnished to do so, subject to the following conditions:
simon 0:350011bf8be7 11
simon 0:350011bf8be7 12 The above copyright notice and this permission notice shall be included in
simon 0:350011bf8be7 13 all copies or substantial portions of the Software.
simon 0:350011bf8be7 14
simon 0:350011bf8be7 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
simon 0:350011bf8be7 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
simon 0:350011bf8be7 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
simon 0:350011bf8be7 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
simon 0:350011bf8be7 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
simon 0:350011bf8be7 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
simon 0:350011bf8be7 21 THE SOFTWARE.
simon 0:350011bf8be7 22 */
simon 0:350011bf8be7 23
simon 0:350011bf8be7 24 /** \file
simon 0:350011bf8be7 25 HTTP File data source/sink header file
simon 0:350011bf8be7 26 */
simon 0:350011bf8be7 27
simon 0:350011bf8be7 28 #ifndef HTTP_FILE_H
simon 0:350011bf8be7 29 #define HTTP_FILE_H
simon 0:350011bf8be7 30
simon 0:350011bf8be7 31 #include "../HTTPData.h"
simon 0:350011bf8be7 32 #include "mbed.h"
simon 0:350011bf8be7 33
simon 0:350011bf8be7 34 ///HTTP Client data container for files
simon 0:350011bf8be7 35 /**
simon 0:350011bf8be7 36 This class provides file access/storage for HTTP requests and responses' data payloads.
simon 0:350011bf8be7 37
simon 0:350011bf8be7 38
simon 0:350011bf8be7 39 */
simon 0:350011bf8be7 40 class HTTPFile : public HTTPData //Read or Write data from a file
simon 0:350011bf8be7 41 {
simon 0:350011bf8be7 42 public:
simon 0:350011bf8be7 43 ///Instantiates data source/sink with file in param.
simon 0:350011bf8be7 44 /**
simon 0:350011bf8be7 45 Uses file at path @a path.
simon 0:350011bf8be7 46 It will be opened when some data has to be read/written from/to it and closed when this operation is complete or on destruction of the instance.
simon 0:350011bf8be7 47 Note that the file will be opened with mode "w" for writing and mode "r" for reading, so the file will be cleared between each request if you are using it for writing.
simon 0:350011bf8be7 48
simon 0:350011bf8be7 49 @note
simon 0:350011bf8be7 50 Note that to use this you must instantiate a proper file system (such as the LocalFileSystem or the SDFileSystem).
simon 0:350011bf8be7 51 */
simon 0:350011bf8be7 52 HTTPFile(const char* path);
simon 0:350011bf8be7 53 virtual ~HTTPFile();
simon 0:350011bf8be7 54
simon 0:350011bf8be7 55 ///Forces file closure
simon 0:350011bf8be7 56 virtual void clear();
simon 0:350011bf8be7 57
simon 0:350011bf8be7 58 protected:
simon 0:350011bf8be7 59 virtual int read(char* buf, int len);
simon 0:350011bf8be7 60 virtual int write(const char* buf, int len);
simon 0:350011bf8be7 61
simon 0:350011bf8be7 62 virtual string getDataType(); //Internet media type for Content-Type header
simon 0:350011bf8be7 63 virtual void setDataType(const string& type); //Internet media type from Content-Type header
simon 0:350011bf8be7 64
simon 0:350011bf8be7 65 virtual bool getIsChunked(); //For Transfer-Encoding header
simon 0:350011bf8be7 66 virtual void setIsChunked(bool chunked); //From Transfer-Encoding header virtual
simon 0:350011bf8be7 67
simon 0:350011bf8be7 68 virtual int getDataLen(); //For Content-Length header
simon 0:350011bf8be7 69 virtual void setDataLen(int len); //From Content-Length header
simon 0:350011bf8be7 70
simon 0:350011bf8be7 71 private:
simon 0:350011bf8be7 72 bool openFile(const char* mode); //true on success, false otherwise
simon 0:350011bf8be7 73 void closeFile();
simon 0:350011bf8be7 74
simon 0:350011bf8be7 75 FILE* m_fp;
simon 0:350011bf8be7 76 string m_path;
simon 0:350011bf8be7 77 int m_len;
simon 0:350011bf8be7 78 bool m_chunked;
simon 0:350011bf8be7 79 };
simon 0:350011bf8be7 80
simon 0:350011bf8be7 81 #endif