17a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé/*
27a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * Copyright (C) 2012 The Android Open Source Project
37a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé *
47a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * Licensed under the Apache License, Version 2.0 (the "License");
57a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * you may not use this file except in compliance with the License.
67a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * You may obtain a copy of the License at
77a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé *
87a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé *      http://www.apache.org/licenses/LICENSE-2.0
97a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé *
107a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * Unless required by applicable law or agreed to in writing, software
117a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * distributed under the License is distributed on an "AS IS" BASIS,
127a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * See the License for the specific language governing permissions and
147a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé * limitations under the License.
157a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé */
167a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
177a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé#ifndef SDP_LOADER_H_
187a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
197a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé#define SDP_LOADER_H_
207a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
217a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé#include <media/stagefright/foundation/AMessage.h>
227a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé#include <media/stagefright/foundation/AHandler.h>
237a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé#include <utils/String8.h>
247a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
257a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhénamespace android {
267a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
277a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhéstruct HTTPBase;
281b86fe063badb5f28c467ade39be0f4008688947Andreas Huberstruct IMediaHTTPService;
297a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
307a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhéstruct SDPLoader : public AHandler {
317a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    enum Flags {
327a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé        // Don't log any URLs.
337a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé        kFlagIncognito = 1,
347a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    };
357a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    enum {
367a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé        kWhatSDPLoaded = 'sdpl'
377a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    };
381b86fe063badb5f28c467ade39be0f4008688947Andreas Huber    SDPLoader(
391b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            const sp<AMessage> &notify,
401b86fe063badb5f28c467ade39be0f4008688947Andreas Huber            uint32_t flags,
4181e68448f3361eaf8618930471fdc3c21bdf5cbcAndreas Huber            const sp<IMediaHTTPService> &httpService);
427a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
437a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    void load(const char* url, const KeyedVector<String8, String8> *headers);
447a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
457a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    void cancel();
467a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
477a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhéprotected:
487a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    virtual ~SDPLoader() {}
497a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
507a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    virtual void onMessageReceived(const sp<AMessage> &msg);
517a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
527a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhéprivate:
537a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    enum {
547a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé        kWhatLoad = 'load',
557a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    };
567a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
577a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    void onLoad(const sp<AMessage> &msg);
587a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
597a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    sp<AMessage> mNotify;
607a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    const char* mUrl;
617a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    uint32_t mFlags;
627a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    sp<ALooper> mNetLooper;
637a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    bool mCancelled;
647a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
657a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    sp<HTTPBase> mHTTPDataSource;
667a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
677a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé    DISALLOW_EVIL_CONSTRUCTORS(SDPLoader);
687a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé};
697a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
707a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé}  // namespace android
717a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé
727a33b7740412accf6a1cc912686c8d0acfb2a883Oscar Rydhé#endif  // SDP_LOADER_H_
73