1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef MEDIA_HTTP_H_
18 
19 #define MEDIA_HTTP_H_
20 
21 #include <media/stagefright/foundation/AString.h>
22 
23 #include "HTTPBase.h"
24 
25 namespace android {
26 
27 struct MediaHTTPConnection;
28 
29 struct MediaHTTP : public HTTPBase {
30     MediaHTTP(const sp<MediaHTTPConnection> &conn);
31 
32     virtual status_t connect(
33             const char *uri,
34             const KeyedVector<String8, String8> *headers,
35             off64_t offset);
36 
37     virtual void close();
38 
39     virtual void disconnect();
40 
41     virtual status_t initCheck() const;
42 
43     virtual ssize_t readAt(off64_t offset, void *data, size_t size);
44 
45     virtual status_t getSize(off64_t *size);
46 
47     virtual uint32_t flags();
48 
49     virtual status_t reconnectAtOffset(off64_t offset);
50 
51 protected:
52     virtual ~MediaHTTP();
53 
54     virtual String8 getUri();
55     virtual String8 getMIMEType() const;
56 
57     AString mLastURI;
58 
59 private:
60     status_t mInitCheck;
61     sp<MediaHTTPConnection> mHTTPConnection;
62 
63     KeyedVector<String8, String8> mLastHeaders;
64 
65     bool mCachedSizeValid;
66     off64_t mCachedSize;
67 
68     DISALLOW_EVIL_CONSTRUCTORS(MediaHTTP);
69 };
70 
71 }  // namespace android
72 
73 #endif  // MEDIA_HTTP_H_
74