| /* |
| * Copyright (C) 2005 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. |
| */ |
| |
| // |
| // Internet address classes. Modeled after Java classes. |
| // |
| #ifndef _RUNTIME_INET_ADDRESS_H |
| #define _RUNTIME_INET_ADDRESS_H |
| |
| #ifdef HAVE_ANDROID_OS |
| #error DO NOT USE THIS FILE IN THE DEVICE BUILD |
| #endif |
| |
| |
| namespace android { |
| |
| /* |
| * This class holds Internet addresses. Perhaps more useful is its |
| * ability to look up addresses by name. |
| * |
| * Invoke one of the static factory methods to create a new object. |
| */ |
| class InetAddress { |
| public: |
| virtual ~InetAddress(void); |
| |
| // create from w.x.y.z or foo.bar.com notation |
| static InetAddress* getByName(const char* host); |
| |
| // copy-construction |
| InetAddress(const InetAddress& orig); |
| |
| const void* getAddress(void) const { return mAddress; } |
| int getAddressLength(void) const { return mLength; } |
| const char* getHostName(void) const { return mName; } |
| |
| private: |
| InetAddress(void); |
| // assignment (private) |
| InetAddress& operator=(const InetAddress& addr); |
| |
| // use a void* here so we don't have to expose actual socket headers |
| void* mAddress; // this is really a ptr to sockaddr_in |
| int mLength; |
| char* mName; |
| }; |
| |
| |
| /* |
| * Base class for socket addresses. |
| */ |
| class SocketAddress { |
| public: |
| SocketAddress() {} |
| virtual ~SocketAddress() {} |
| }; |
| |
| |
| /* |
| * Internet address class. This combines an InetAddress with a port. |
| */ |
| class InetSocketAddress : public SocketAddress { |
| public: |
| InetSocketAddress() : |
| mAddress(0), mPort(-1) |
| {} |
| ~InetSocketAddress(void) { |
| delete mAddress; |
| } |
| |
| // Create an address with a host wildcard (useful for servers). |
| bool create(int port); |
| // Create an address with the specified host and port. |
| bool create(const InetAddress* addr, int port); |
| // Create an address with the specified host and port. Does the |
| // hostname lookup. |
| bool create(const char* host, int port); |
| |
| const InetAddress* getAddress(void) const { return mAddress; } |
| const int getPort(void) const { return mPort; } |
| const char* getHostName(void) const { return mAddress->getHostName(); } |
| |
| private: |
| InetAddress* mAddress; |
| int mPort; |
| }; |
| |
| }; // namespace android |
| |
| #endif // _RUNTIME_INET_ADDRESS_H |