Netservices modded to read fragmented HTTP respsonse/payload from special purpose server - 180 bytes only

Committer:
RodColeman
Date:
Thu Sep 08 10:48:09 2011 +0000
Revision:
0:850eacf3e945
revised fixed length to 178 bytes

Who changed what in which revision?

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