summaryrefslogtreecommitdiffstats
path: root/include/utils/inet_address.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/utils/inet_address.h')
-rw-r--r--include/utils/inet_address.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/include/utils/inet_address.h b/include/utils/inet_address.h
new file mode 100644
index 0000000..dbd8672
--- /dev/null
+++ b/include/utils/inet_address.h
@@ -0,0 +1,103 @@
+/*
+ * 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