HTTPBase.h revision 1156dc913a5ba7b2bc86489468d4914430f03d14
11156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber/*
21156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * Copyright (C) 2011 The Android Open Source Project
31156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber *
41156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
51156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * you may not use this file except in compliance with the License.
61156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * You may obtain a copy of the License at
71156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber *
81156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
91156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber *
101156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * Unless required by applicable law or agreed to in writing, software
111156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
121156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * See the License for the specific language governing permissions and
141156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber * limitations under the License.
151156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber */
161156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
171156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber#ifndef HTTP_BASE_H_
181156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
191156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber#define HTTP_BASE_H_
201156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
211156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber#include <media/stagefright/foundation/ABase.h>
221156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber#include <media/stagefright/DataSource.h>
231156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
241156dc913a5ba7b2bc86489468d4914430f03d14Andreas Hubernamespace android {
251156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
261156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huberstruct HTTPBase : public DataSource {
271156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    enum Flags {
281156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber        // Don't log any URLs.
291156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber        kFlagIncognito = 1
301156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    };
311156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
321156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    HTTPBase();
331156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
341156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    virtual status_t connect(
351156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber            const char *uri,
361156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber            const KeyedVector<String8, String8> *headers = NULL,
371156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber            off64_t offset = 0) = 0;
381156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
391156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    virtual void disconnect() = 0;
401156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
411156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    // Returns true if bandwidth could successfully be estimated,
421156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    // false otherwise.
431156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    virtual bool estimateBandwidth(int32_t *bandwidth_bps) = 0;
441156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
451156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    static sp<HTTPBase> Create(uint32_t flags = 0);
461156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
471156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huberprivate:
481156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(HTTPBase);
491156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber};
501156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
511156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber}  // namespace android
521156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber
531156dc913a5ba7b2bc86489468d4914430f03d14Andreas Huber#endif  // HTTP_BASE_H_
54