Squashed commit of the following:

commit 610ed879d57785cb0457f7f127889496d325f732
Author: Andreas Huber <andih@google.com>
Date:   Fri Nov 19 09:28:52 2010 -0800

    HTTP header keys are to be treated case insensitive.

    Change-Id: I9690880528a6b0f611958de7996c2753948a03c3

commit 554a2499a293d8d53907d01d972a9cfe9b92738e
Author: Andreas Huber <andih@google.com>
Date:   Fri Nov 19 09:22:45 2010 -0800

    Remove one more legacy "string" implementation.

    Change-Id: I7638d849427a39bbc040082a8663b3b9b81a632b

Change-Id: I626a60abdcd1dd6403be880dad4d0499d77ca71f
This commit is contained in:
Andreas Huber
2010-11-19 09:36:13 -08:00
parent cc34eed58d
commit 61c79b6df9
7 changed files with 27 additions and 168 deletions

View File

@ -49,7 +49,6 @@ LOCAL_SRC_FILES:= \
WVMExtractor.cpp \
XINGSeeker.cpp \
avc_utils.cpp \
string.cpp
LOCAL_C_INCLUDES:= \
$(JNI_H_INCLUDE) \

View File

@ -36,7 +36,7 @@
namespace android {
// static
const char *HTTPStream::kStatusKey = ":status:";
const char *HTTPStream::kStatusKey = ":status:"; // MUST be lowercase.
HTTPStream::HTTPStream()
: mState(READY),
@ -220,7 +220,7 @@ status_t HTTPStream::receive_header(int *http_status) {
return err;
}
mHeaders.add(string(kStatusKey), string(line));
mHeaders.add(AString(kStatusKey), AString(line));
char *spacePos = strchr(line, ' ');
if (spacePos == NULL) {
@ -264,7 +264,10 @@ status_t HTTPStream::receive_header(int *http_status) {
char *colonPos = strchr(line, ':');
if (colonPos == NULL) {
mHeaders.add(string(line), string());
AString key = line;
key.tolower();
mHeaders.add(key, AString());
} else {
char *end_of_key = colonPos;
while (end_of_key > line && isspace(end_of_key[-1])) {
@ -278,7 +281,10 @@ status_t HTTPStream::receive_header(int *http_status) {
*end_of_key = '\0';
mHeaders.add(string(line), string(start_of_value));
AString key = line;
key.tolower();
mHeaders.add(key, AString(start_of_value));
}
}
@ -314,8 +320,11 @@ ssize_t HTTPStream::receive(void *data, size_t size) {
return (ssize_t)total;
}
bool HTTPStream::find_header_value(const string &key, string *value) const {
ssize_t index = mHeaders.indexOfKey(key);
bool HTTPStream::find_header_value(const AString &key, AString *value) const {
AString key_lower = key;
key_lower.tolower();
ssize_t index = mHeaders.indexOfKey(key_lower);
if (index < 0) {
value->clear();
return false;

View File

@ -178,7 +178,7 @@ status_t NuHTTPDataSource::connect(
}
if (IsRedirectStatusCode(httpStatus)) {
string value;
AString value;
CHECK(mHTTP.find_header_value("Location", &value));
mState = DISCONNECTED;
@ -198,9 +198,8 @@ status_t NuHTTPDataSource::connect(
mHasChunkedTransferEncoding = false;
{
string value;
if (mHTTP.find_header_value("Transfer-Encoding", &value)
|| mHTTP.find_header_value("Transfer-encoding", &value)) {
AString value;
if (mHTTP.find_header_value("Transfer-Encoding", &value)) {
// We don't currently support any transfer encodings but
// chunked.
@ -222,9 +221,9 @@ status_t NuHTTPDataSource::connect(
applyTimeoutResponse();
if (offset == 0) {
string value;
AString value;
unsigned long x;
if (mHTTP.find_header_value(string("Content-Length"), &value)
if (mHTTP.find_header_value(AString("Content-Length"), &value)
&& ParseSingleUnsignedLong(value.c_str(), &x)) {
mContentLength = (off64_t)x;
mContentLengthValid = true;
@ -239,9 +238,9 @@ status_t NuHTTPDataSource::connect(
return ERROR_UNSUPPORTED;
}
string value;
AString value;
unsigned long x;
if (mHTTP.find_header_value(string("Content-Range"), &value)) {
if (mHTTP.find_header_value(AString("Content-Range"), &value)) {
const char *slashPos = strchr(value.c_str(), '/');
if (slashPos != NULL
&& ParseSingleUnsignedLong(slashPos + 1, &x)) {
@ -439,7 +438,7 @@ void NuHTTPDataSource::MakeFullHeaders(
}
void NuHTTPDataSource::applyTimeoutResponse() {
string timeout;
AString timeout;
if (mHTTP.find_header_value("X-SocketTimeout", &timeout)) {
const char *s = timeout.c_str();
char *end;

View File

@ -14,7 +14,6 @@
* limitations under the License.
*/
#include "include/stagefright_string.h"
#include "include/HTTPStream.h"
#include <stdlib.h>
@ -34,7 +33,7 @@ ShoutcastSource::ShoutcastSource(HTTPStream *http)
mBytesUntilMetaData(0),
mGroup(NULL),
mStarted(false) {
string metaint;
AString metaint;
if (mHttp->find_header_value("icy-metaint", &metaint)) {
char *end;
const char *start = metaint.c_str();

View File

@ -18,10 +18,9 @@
#define HTTP_STREAM_H_
#include "stagefright_string.h"
#include <sys/types.h>
#include <media/stagefright/foundation/AString.h>
#include <media/stagefright/MediaErrors.h>
#include <utils/KeyedVector.h>
#include <utils/threads.h>
@ -50,7 +49,7 @@ public:
static const char *kStatusKey;
bool find_header_value(
const string &key, string *value) const;
const AString &key, AString *value) const;
// Pass a negative value to disable the timeout.
void setReceiveTimeout(int seconds);
@ -70,7 +69,7 @@ private:
Mutex mLock;
int mSocket;
KeyedVector<string, string> mHeaders;
KeyedVector<AString, AString> mHeaders;
HTTPStream(const HTTPStream &);
HTTPStream &operator=(const HTTPStream &);

View File

@ -1,54 +0,0 @@
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef STRING_H_
#define STRING_H_
#include <utils/String8.h>
namespace android {
class string {
public:
typedef size_t size_type;
static size_type npos;
string();
string(const char *s);
string(const char *s, size_t length);
string(const string &from, size_type start, size_type length = npos);
const char *c_str() const;
size_type size() const;
void clear();
void erase(size_type from, size_type length);
size_type find(char c) const;
bool operator<(const string &other) const;
bool operator==(const string &other) const;
string &operator+=(char c);
private:
String8 mString;
};
} // namespace android
#endif // STRING_H_

View File

@ -1,92 +0,0 @@
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "include/stagefright_string.h"
#include <media/stagefright/MediaDebug.h>
namespace android {
// static
string::size_type string::npos = (string::size_type)-1;
string::string() {
}
string::string(const char *s, size_t length)
: mString(s, length) {
}
string::string(const string &from, size_type start, size_type length) {
CHECK(start <= from.size());
if (length == npos) {
length = from.size() - start;
} else {
CHECK(start + length <= from.size());
}
mString.setTo(from.c_str() + start, length);
}
string::string(const char *s)
: mString(s) {
}
const char *string::c_str() const {
return mString.string();
}
string::size_type string::size() const {
return mString.length();
}
void string::clear() {
mString = String8();
}
string::size_type string::find(char c) const {
char s[2];
s[0] = c;
s[1] = '\0';
ssize_t index = mString.find(s);
return index < 0 ? npos : (size_type)index;
}
bool string::operator<(const string &other) const {
return mString < other.mString;
}
bool string::operator==(const string &other) const {
return mString == other.mString;
}
string &string::operator+=(char c) {
mString.append(&c, 1);
return *this;
}
void string::erase(size_t from, size_t length) {
String8 s(mString.string(), from);
s.append(mString.string() + from + length);
mString = s;
}
} // namespace android