1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* 2231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2009 Apple Inc. All rights reserved. 3231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2009 Google Inc. All rights reserved. 48f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Redistribution and use in source and binary forms, with or without 6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modification, are permitted provided that the following conditions are 7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * met: 88f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions of source code must retain the above copyright 10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * notice, this list of conditions and the following disclaimer. 11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions in binary form must reproduce the above 12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * copyright notice, this list of conditions and the following disclaimer 13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in the documentation and/or other materials provided with the 14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * distribution. 15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Neither the name of Google Inc. nor the names of its 16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * contributors may be used to endorse or promote products derived from 17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * this software without specific prior written permission. 188f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#ifndef SocketStreamErrorBase_h 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#define SocketStreamErrorBase_h 34635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 35f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "PlatformString.h" 36f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WebCore { 38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class SocketStreamError; 405f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 41231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class SocketStreamErrorBase { 425f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian public: 43231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // Makes a deep copy. Useful for when you need to use a SocketStreamError on another thread. 44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block SocketStreamError copy() const; 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 46231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool isNull() const { return m_isNull; } 47231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 48231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block int errorCode() const { return m_errorCode; } 49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const String& failingURL() const { return m_failingURL; } 50f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch const String& localizedDescription() const { return m_localizedDescription; } 51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block static bool compare(const SocketStreamError&, const SocketStreamError&); 53231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block protected: 55231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block SocketStreamErrorBase() 56231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block : m_errorCode(0) 57231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_isNull(true) 58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block explicit SocketStreamErrorBase(int errorCode) 62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block : m_errorCode(errorCode) 63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_isNull(false) 645f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian { 655f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian } 665f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 67f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch SocketStreamErrorBase(int errorCode, const String& failingURL, const String& localizedDescription) 68f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch : m_errorCode(errorCode) 69f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch , m_failingURL(failingURL) 70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch , m_localizedDescription(localizedDescription) 71f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch , m_isNull(false) 72f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch { 73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 74f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block int m_errorCode; 76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch String m_failingURL; 77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch String m_localizedDescription; 78231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool m_isNull; 795f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian }; 80635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 81231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block inline bool operator==(const SocketStreamError& a, const SocketStreamError& b) { return SocketStreamErrorBase::compare(a, b); } 82231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block inline bool operator!=(const SocketStreamError& a, const SocketStreamError& b) { return !(a == b); } 83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 84231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} // namespace WebCore 855f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 86231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif // SocketStreamErrorBase_h 87