1ec7d71e6SNiels Sascha Reedijk/* 2ec7d71e6SNiels Sascha Reedijk * Copyright 2021 Haiku, Inc. All rights reserved. 3ec7d71e6SNiels Sascha Reedijk * Distributed under the terms of the MIT License. 4ec7d71e6SNiels Sascha Reedijk * 5ec7d71e6SNiels Sascha Reedijk * Authors: 6ec7d71e6SNiels Sascha Reedijk * Niels Sascha Reedijk, niels.reedijk@gmail.com 7ec7d71e6SNiels Sascha Reedijk * 8ec7d71e6SNiels Sascha Reedijk * Corresponds to: 9ec7d71e6SNiels Sascha Reedijk * headers/private/netservices2/NetServicesDefs.h hrev????? 10ec7d71e6SNiels Sascha Reedijk */ 11ec7d71e6SNiels Sascha Reedijk 12ec7d71e6SNiels Sascha Reedijk 13ec7d71e6SNiels Sascha Reedijk#if __cplusplus >= 201703L 14ec7d71e6SNiels Sascha Reedijk 15ec7d71e6SNiels Sascha Reedijknamespace BPrivate { 16ec7d71e6SNiels Sascha Reedijk 17ec7d71e6SNiels Sascha Reedijknamespace Network { 18ec7d71e6SNiels Sascha Reedijk 19ec7d71e6SNiels Sascha Reedijk 20ec7d71e6SNiels Sascha Reedijk/*! 21*3b2aa6c3SNiels Sascha Reedijk \file NetServicesDefs.h 22*3b2aa6c3SNiels Sascha Reedijk \ingroup netservices 23*3b2aa6c3SNiels Sascha Reedijk \brief Various standardized error and notification types used by multiple protocols of the 24*3b2aa6c3SNiels Sascha Reedijk Network Services Kit. 25*3b2aa6c3SNiels Sascha Reedijk 26*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 27*3b2aa6c3SNiels Sascha Reedijk*/ 28*3b2aa6c3SNiels Sascha Reedijk 29*3b2aa6c3SNiels Sascha Reedijk 30*3b2aa6c3SNiels Sascha Reedijk/*! 31ec7d71e6SNiels Sascha Reedijk \class BUnsupportedProtocol 32ec7d71e6SNiels Sascha Reedijk \ingroup netservices 33ec7d71e6SNiels Sascha Reedijk \brief Error that indicates that the protocol is not supported. 34ec7d71e6SNiels Sascha Reedijk 35ec7d71e6SNiels Sascha Reedijk \since Haiku R1 36ec7d71e6SNiels Sascha Reedijk*/ 37ec7d71e6SNiels Sascha Reedijk 38ec7d71e6SNiels Sascha Reedijk 39ec7d71e6SNiels Sascha Reedijk/*! 40ec7d71e6SNiels Sascha Reedijk \fn BUnsupportedProtocol::BUnsupportedProtocol(const char* origin, 41ec7d71e6SNiels Sascha Reedijk BUrl url, BStringList supportedProtocols) 42*3b2aa6c3SNiels Sascha Reedijk \brief Create a new unsupported protocol error. 43ec7d71e6SNiels Sascha Reedijk 44ec7d71e6SNiels Sascha Reedijk \param origin A string representing where this error occured. It is advised 45ec7d71e6SNiels Sascha Reedijk to initialize it to \c __PRETTY_FUNCTION__ by default. 46ec7d71e6SNiels Sascha Reedijk \param url The URL object with the unsupported protocol. 47ec7d71e6SNiels Sascha Reedijk \param supportedProtocols A list with the supported protocols. 48ec7d71e6SNiels Sascha Reedijk 49ec7d71e6SNiels Sascha Reedijk \since Haiku R1 50ec7d71e6SNiels Sascha Reedijk*/ 51ec7d71e6SNiels Sascha Reedijk 52ec7d71e6SNiels Sascha Reedijk 53ec7d71e6SNiels Sascha Reedijk/*! 54ec7d71e6SNiels Sascha Reedijk \fn BUnsupportedProtocol::BUnsupportedProtocol(BString origin, BUrl url, 55ec7d71e6SNiels Sascha Reedijk BStringList supportedProtocols) 56ec7d71e6SNiels Sascha Reedijk \copydoc BUnsupportedProtocol(const char*, BUrl, BStringList) 57ec7d71e6SNiels Sascha Reedijk 58ec7d71e6SNiels Sascha Reedijk \since Haiku R1 59ec7d71e6SNiels Sascha Reedijk*/ 60ec7d71e6SNiels Sascha Reedijk 61ec7d71e6SNiels Sascha Reedijk 62ec7d71e6SNiels Sascha Reedijk/*! 63ec7d71e6SNiels Sascha Reedijk \fn virtual const char* BUnsupportedProtocol::Message() const noexcept override 64ec7d71e6SNiels Sascha Reedijk \brief Access the string representation of the message. 65ec7d71e6SNiels Sascha Reedijk 66ec7d71e6SNiels Sascha Reedijk \since Haiku R1 67ec7d71e6SNiels Sascha Reedijk*/ 68ec7d71e6SNiels Sascha Reedijk 69ec7d71e6SNiels Sascha Reedijk 70ec7d71e6SNiels Sascha Reedijk/*! 71ec7d71e6SNiels Sascha Reedijk \fn const BUrl& BUnsupportedProtocol::Url() const 72ec7d71e6SNiels Sascha Reedijk \brief The URL that caused the issue. 73ec7d71e6SNiels Sascha Reedijk 74ec7d71e6SNiels Sascha Reedijk \since Haiku R1 75ec7d71e6SNiels Sascha Reedijk*/ 76ec7d71e6SNiels Sascha Reedijk 77ec7d71e6SNiels Sascha Reedijk 78ec7d71e6SNiels Sascha Reedijk/*! 79ec7d71e6SNiels Sascha Reedijk \fn const BStringList& BUnsupportedProtocol::SupportedProtocols() const 80ec7d71e6SNiels Sascha Reedijk \brief A list of protocols that are supported. 81ec7d71e6SNiels Sascha Reedijk 82ec7d71e6SNiels Sascha Reedijk \since Haiku R1 83ec7d71e6SNiels Sascha Reedijk*/ 84ec7d71e6SNiels Sascha Reedijk 85ec7d71e6SNiels Sascha Reedijk 86ec7d71e6SNiels Sascha Reedijk/*! 87ec7d71e6SNiels Sascha Reedijk \class BInvalidUrl 88ec7d71e6SNiels Sascha Reedijk \ingroup netservices 89ec7d71e6SNiels Sascha Reedijk \brief Error that indicates that the URL is not valid. 90ec7d71e6SNiels Sascha Reedijk 91ec7d71e6SNiels Sascha Reedijk This error is raised as an exception when the caller tries to pass a 92ec7d71e6SNiels Sascha Reedijk \ref BUrl object that does not contain a valid URL. 93ec7d71e6SNiels Sascha Reedijk 94ec7d71e6SNiels Sascha Reedijk \see \ref BUrl::IsValid() 95ec7d71e6SNiels Sascha Reedijk 96ec7d71e6SNiels Sascha Reedijk \since Haiku R1 97ec7d71e6SNiels Sascha Reedijk*/ 98ec7d71e6SNiels Sascha Reedijk 99ec7d71e6SNiels Sascha Reedijk 100ec7d71e6SNiels Sascha Reedijk/*! 101ec7d71e6SNiels Sascha Reedijk \fn BInvalidUrl::BInvalidUrl(const char* origin, BUrl url) 102ec7d71e6SNiels Sascha Reedijk \brief Create a new error invalid URL error. 103ec7d71e6SNiels Sascha Reedijk 104ec7d71e6SNiels Sascha Reedijk \param origin A string representing where this error occured. It is advised 105ec7d71e6SNiels Sascha Reedijk to initialize it to \c __PRETTY_FUNCTION__ by default. 106ec7d71e6SNiels Sascha Reedijk \param url The URL object that did not contain a valid URL. 107ec7d71e6SNiels Sascha Reedijk 108ec7d71e6SNiels Sascha Reedijk \since Haiku R1 109ec7d71e6SNiels Sascha Reedijk*/ 110ec7d71e6SNiels Sascha Reedijk 111ec7d71e6SNiels Sascha Reedijk 112ec7d71e6SNiels Sascha Reedijk/*! 113ec7d71e6SNiels Sascha Reedijk \fn BInvalidUrl::BInvalidUrl(BString origin, BUrl url) 114ec7d71e6SNiels Sascha Reedijk \copydoc BInvalidUrl::BInvalidUrl(const char* origin, BUrl url) 115ec7d71e6SNiels Sascha Reedijk*/ 116ec7d71e6SNiels Sascha Reedijk 117ec7d71e6SNiels Sascha Reedijk 118ec7d71e6SNiels Sascha Reedijk/*! 119ec7d71e6SNiels Sascha Reedijk \fn virtual const char* BInvalidUrl::Message() const noexcept override 120ec7d71e6SNiels Sascha Reedijk \brief Access the string representation of the message. 121ec7d71e6SNiels Sascha Reedijk 122ec7d71e6SNiels Sascha Reedijk \since Haiku R1 123ec7d71e6SNiels Sascha Reedijk*/ 124ec7d71e6SNiels Sascha Reedijk 125ec7d71e6SNiels Sascha Reedijk 126ec7d71e6SNiels Sascha Reedijk/*! 127ec7d71e6SNiels Sascha Reedijk \fn const BUrl& BInvalidUrl::Url() const 128ec7d71e6SNiels Sascha Reedijk \brief The URL that caused the issue. 129ec7d71e6SNiels Sascha Reedijk 130ec7d71e6SNiels Sascha Reedijk \since Haiku R1 131ec7d71e6SNiels Sascha Reedijk*/ 132ec7d71e6SNiels Sascha Reedijk 133ec7d71e6SNiels Sascha Reedijk 134*3b2aa6c3SNiels Sascha Reedijk/*! 135*3b2aa6c3SNiels Sascha Reedijk \class BNetworkRequestError 136*3b2aa6c3SNiels Sascha Reedijk \ingroup netservices 137*3b2aa6c3SNiels Sascha Reedijk \brief Error that indicates there was an issue executing the network request. 138*3b2aa6c3SNiels Sascha Reedijk 139*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 140*3b2aa6c3SNiels Sascha Reedijk*/ 141*3b2aa6c3SNiels Sascha Reedijk 142*3b2aa6c3SNiels Sascha Reedijk 143*3b2aa6c3SNiels Sascha Reedijk/*! 144*3b2aa6c3SNiels Sascha Reedijk \enum BNetworkRequestError::ErrorType 145*3b2aa6c3SNiels Sascha Reedijk \ingroup netservices 146*3b2aa6c3SNiels Sascha Reedijk \brief A list of errors that can occur while executing a network request. 147*3b2aa6c3SNiels Sascha Reedijk 148*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 149*3b2aa6c3SNiels Sascha Reedijk*/ 150*3b2aa6c3SNiels Sascha Reedijk 151*3b2aa6c3SNiels Sascha Reedijk 152*3b2aa6c3SNiels Sascha Reedijk/*! 153*3b2aa6c3SNiels Sascha Reedijk \var BNetworkRequestError::ErrorType BNetworkRequestError::HostnameError 154*3b2aa6c3SNiels Sascha Reedijk \brief Error resolving the hostname. 155*3b2aa6c3SNiels Sascha Reedijk 156*3b2aa6c3SNiels Sascha Reedijk \ref ErrorCode() will be set to contain the underlying error code. 157*3b2aa6c3SNiels Sascha Reedijk 158*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 159*3b2aa6c3SNiels Sascha Reedijk*/ 160*3b2aa6c3SNiels Sascha Reedijk 161*3b2aa6c3SNiels Sascha Reedijk 162*3b2aa6c3SNiels Sascha Reedijk/*! 163*3b2aa6c3SNiels Sascha Reedijk \var BNetworkRequestError::ErrorType BNetworkRequestError::NetworkError 164*3b2aa6c3SNiels Sascha Reedijk \brief The request was interrupted due to a network error. 165*3b2aa6c3SNiels Sascha Reedijk 166*3b2aa6c3SNiels Sascha Reedijk This may occur when reading or writing fails due to an underlying network error, like an 167*3b2aa6c3SNiels Sascha Reedijk unexpected closed connection. 168*3b2aa6c3SNiels Sascha Reedijk 169*3b2aa6c3SNiels Sascha Reedijk \ref ErrorCode() will be set to contain the underlying error code. 170*3b2aa6c3SNiels Sascha Reedijk 171*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 172*3b2aa6c3SNiels Sascha Reedijk*/ 173*3b2aa6c3SNiels Sascha Reedijk 174*3b2aa6c3SNiels Sascha Reedijk 175*3b2aa6c3SNiels Sascha Reedijk/*! 176*3b2aa6c3SNiels Sascha Reedijk \var BNetworkRequestError::ErrorType BNetworkRequestError::ProtocolError 177*3b2aa6c3SNiels Sascha Reedijk \brief The request did not complete because the response did not conform to the protocol. 178*3b2aa6c3SNiels Sascha Reedijk 179*3b2aa6c3SNiels Sascha Reedijk The server gave an unexpected or incorrect response. The network request could not complete 180*3b2aa6c3SNiels Sascha Reedijk because of this. 181*3b2aa6c3SNiels Sascha Reedijk 182*3b2aa6c3SNiels Sascha Reedijk There will not be any \ref ErrorCode() set. 183*3b2aa6c3SNiels Sascha Reedijk 184*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 185*3b2aa6c3SNiels Sascha Reedijk*/ 186*3b2aa6c3SNiels Sascha Reedijk 187*3b2aa6c3SNiels Sascha Reedijk 188*3b2aa6c3SNiels Sascha Reedijk/*! 189*3b2aa6c3SNiels Sascha Reedijk \var BNetworkRequestError::ErrorType BNetworkRequestError::SystemError 190*3b2aa6c3SNiels Sascha Reedijk \brief Other internal error while handling the request. 191*3b2aa6c3SNiels Sascha Reedijk 192*3b2aa6c3SNiels Sascha Reedijk There could have been issues initializing buffers or decompression engines. 193*3b2aa6c3SNiels Sascha Reedijk 194*3b2aa6c3SNiels Sascha Reedijk \ref ErrorCode() will be set to contain the underlying error code. 195*3b2aa6c3SNiels Sascha Reedijk 196*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 197*3b2aa6c3SNiels Sascha Reedijk*/ 198*3b2aa6c3SNiels Sascha Reedijk 199*3b2aa6c3SNiels Sascha Reedijk 200*3b2aa6c3SNiels Sascha Reedijk/*! 201*3b2aa6c3SNiels Sascha Reedijk \var BNetworkRequestError::ErrorType BNetworkRequestError::Canceled 202*3b2aa6c3SNiels Sascha Reedijk \brief The request was canceled before it was completed. 203*3b2aa6c3SNiels Sascha Reedijk 204*3b2aa6c3SNiels Sascha Reedijk This could either have been done through the API, or because the session that schedules and 205*3b2aa6c3SNiels Sascha Reedijk executes the requests was destroyed. 206*3b2aa6c3SNiels Sascha Reedijk 207*3b2aa6c3SNiels Sascha Reedijk There will not be any \ref ErrorCode() set. 208*3b2aa6c3SNiels Sascha Reedijk 209*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 210*3b2aa6c3SNiels Sascha Reedijk*/ 211*3b2aa6c3SNiels Sascha Reedijk 212*3b2aa6c3SNiels Sascha Reedijk 213*3b2aa6c3SNiels Sascha Reedijk/*! 214*3b2aa6c3SNiels Sascha Reedijk \fn BNetworkRequestError::BNetworkRequestError(const char *origin, ErrorType type, 215*3b2aa6c3SNiels Sascha Reedijk status_t errorCode=B_OK) 216*3b2aa6c3SNiels Sascha Reedijk \brief Create a new network request error. 217*3b2aa6c3SNiels Sascha Reedijk 218*3b2aa6c3SNiels Sascha Reedijk \param origin A string representing where this error occured. It is advised 219*3b2aa6c3SNiels Sascha Reedijk to initialize it to \c __PRETTY_FUNCTION__ by default. 220*3b2aa6c3SNiels Sascha Reedijk \param type The error type that describes what the issue was that prevented the completion of 221*3b2aa6c3SNiels Sascha Reedijk the request. 222*3b2aa6c3SNiels Sascha Reedijk \param error Optional underlying system error. See the \ref BNetworkRequestError::ErrorType 223*3b2aa6c3SNiels Sascha Reedijk documentation on which error types expect a system error. 224*3b2aa6c3SNiels Sascha Reedijk 225*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 226*3b2aa6c3SNiels Sascha Reedijk*/ 227*3b2aa6c3SNiels Sascha Reedijk 228*3b2aa6c3SNiels Sascha Reedijk 229*3b2aa6c3SNiels Sascha Reedijk/*! 230*3b2aa6c3SNiels Sascha Reedijk \fn status_t BNetworkRequestError::ErrorCode() const noexcept 231*3b2aa6c3SNiels Sascha Reedijk \brief Get the underlying system error code. 232*3b2aa6c3SNiels Sascha Reedijk 233*3b2aa6c3SNiels Sascha Reedijk \return A \c status_t error code when the associated \ref BNetworkRequestError::ErrorType sets 234*3b2aa6c3SNiels Sascha Reedijk the system error, or \c B_OK if there is no additional error code available. 235*3b2aa6c3SNiels Sascha Reedijk 236*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 237*3b2aa6c3SNiels Sascha Reedijk*/ 238*3b2aa6c3SNiels Sascha Reedijk 239*3b2aa6c3SNiels Sascha Reedijk 240*3b2aa6c3SNiels Sascha Reedijk/*! 241*3b2aa6c3SNiels Sascha Reedijk \fn ErrorType BNetworkRequestError::Type() const noexcept 242*3b2aa6c3SNiels Sascha Reedijk \brief Get the error type. 243*3b2aa6c3SNiels Sascha Reedijk 244*3b2aa6c3SNiels Sascha Reedijk \return Get the \ref BNetworkRequestError::ErrorType that describes the cause for the request 245*3b2aa6c3SNiels Sascha Reedijk to fail. 246*3b2aa6c3SNiels Sascha Reedijk 247*3b2aa6c3SNiels Sascha Reedijk \since Haiku R1 248*3b2aa6c3SNiels Sascha Reedijk*/ 249*3b2aa6c3SNiels Sascha Reedijk 250*3b2aa6c3SNiels Sascha Reedijk 251ec7d71e6SNiels Sascha Reedijk} // namespace Network 252ec7d71e6SNiels Sascha Reedijk 253ec7d71e6SNiels Sascha Reedijk} // namespace BPrivate 254ec7d71e6SNiels Sascha Reedijk 255ec7d71e6SNiels Sascha Reedijk#endif 256