• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • kdecore
 

kdecore

  • kdecore
ksockaddr.h
1 /*
2  * This file is part of the KDE libraries
3  * Copyright (C) 2000-2003 Thiago Macieira <thiago.macieira@kdemail.net>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB. If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20 #ifndef KSOCKADDR_H
21 #define KSOCKADDR_H
22 
23 #include <tqobject.h>
24 #include <tqcstring.h>
25 #include <tqstring.h>
26 #include "kdelibs_export.h"
27 
28 /*
29  * This file defines a class that envelopes most, if not all, socket addresses
30  */
31 typedef unsigned ksocklen_t;
32 
33 struct sockaddr;
34 
35 class KExtendedSocket; // No need to define it fully
36 
37 class KSocketAddressPrivate;
46 class KDECORE_EXPORT KSocketAddress: public TQObject
47 {
48  Q_OBJECT
49 protected:
53  KSocketAddress() { init(); }
54 
60  KSocketAddress(const sockaddr* sa, ksocklen_t size);
61 
62 public:
66  virtual ~KSocketAddress();
67 
72  virtual TQString pretty() const;
73 
78  const sockaddr* address() const
79  { return data; }
80 
85  virtual ksocklen_t size() const
86  { return datasize; }
87 
93  operator const sockaddr*() const
94  { return data; }
95 
100  int family() const;
101 
107  inline int ianaFamily() const
108  { return ianaFamily(family()); }
109 
115  virtual bool isEqual(const KSocketAddress& other) const;
116  bool isEqual(const KSocketAddress* other) const
117  { return isEqual(*other); }
118 
123  bool operator==(const KSocketAddress& other) const
124  { return isEqual(other); }
125 
136  bool isCoreEqual(const KSocketAddress& other) const;
137 
148  bool isCoreEqual(const KSocketAddress* other) const
149  { return isCoreEqual(*other); }
150 
158  virtual TQString nodeName() const;
159 
167  virtual TQString serviceName() const;
168 
169 protected:
170  sockaddr* data;
171  ksocklen_t datasize;
172  bool owndata;
173 
174 private:
175  void init();
176  /* No copy constructor */
177  KSocketAddress(KSocketAddress&);
178  KSocketAddress& operator=(KSocketAddress&);
179 
180 public:
188  static KSocketAddress* newAddress(const struct sockaddr *sa, ksocklen_t size);
189 
197  static int ianaFamily(int af);
198 
203  static int fromIanaFamily(int iana);
204 
205  friend class KExtendedSocket;
206 protected:
207  virtual void virtual_hook( int id, void* data );
208 private:
209  KSocketAddressPrivate* d;
210 };
211 
212 /*
213  * External definitions
214  * We need these for KInetSocketAddress
215  */
216 struct sockaddr_in;
217 struct sockaddr_in6;
218 struct in_addr;
219 struct in6_addr;
220 
221 class KInetSocketAddressPrivate;
233 class KDECORE_EXPORT KInetSocketAddress: public ::KSocketAddress
234 {
235  Q_OBJECT
236 public:
240  KInetSocketAddress();
241 
245  KInetSocketAddress(const KInetSocketAddress&);
246 
252  KInetSocketAddress(const sockaddr_in* sin, ksocklen_t len);
253 
259  KInetSocketAddress(const sockaddr_in6* sin6, ksocklen_t len);
260 
266  KInetSocketAddress(const in_addr& addr, unsigned short port);
267 
273  KInetSocketAddress(const in6_addr& addr, unsigned short port);
274 
284  KInetSocketAddress(const TQString& addr, unsigned short port, int family = -1);
285 
289  virtual ~KInetSocketAddress();
290 
296  bool setAddress(const KInetSocketAddress& ksa);
297 
304  bool setAddress(const sockaddr_in* sin, ksocklen_t len);
305 
314  bool setAddress(const sockaddr_in6* sin6, ksocklen_t len);
315 
322  bool setAddress(const in_addr& addr, unsigned short port);
323 
330  bool setAddress(const in6_addr& addr, unsigned short port);
331 
349  bool setAddress(const TQString& addr, unsigned short port, int family = -1);
350 
356  bool setHost(const in_addr& addr);
357 
363  bool setHost(const in6_addr& addr);
364 
371  bool setHost(const TQString& addr, int family = -1);
372 
378  bool setPort(unsigned short port);
379 
387  bool setFamily(int family);
388 
394  bool setFlowinfo(TQ_UINT32 flowinfo);
395 
401  bool setScopeId(int scopeid);
402 
407  virtual TQString pretty() const;
408 
413  virtual TQString nodeName() const;
414  // TQString prettyHost() const;
415 
420  virtual TQString serviceName() const;
421 
431  const sockaddr_in* addressV4() const;
432 
437  const sockaddr_in6* addressV6() const;
438 
444  in_addr hostV4() const;
445 
452  in6_addr hostV6() const;
453 
458  unsigned short port() const;
459 
464  TQ_UINT32 flowinfo() const;
465 
470  int scopeId() const;
471 
477  virtual ksocklen_t size() const; // should be socklen_t
478 
479  /* comparation */
491  static bool areEqualInet(const KSocketAddress &s1, const KSocketAddress &s2, bool coreOnly);
492 
504  static bool areEqualInet6(const KSocketAddress &s1, const KSocketAddress &s2, bool coreOnly);
505 
506  /* operators */
507 
514  operator const sockaddr_in*() const
515  { return addressV4(); }
516 
522  operator const sockaddr_in6*() const
523  { return addressV6(); }
524 
528  KInetSocketAddress& operator=(const KInetSocketAddress &other)
529  { setAddress(other); return *this; }
530 
531 private:
532 
533  void fromV4();
534  void fromV6();
535 
536 public:
544  static TQString addrToString(int family, const void *addr);
545 
555  static bool stringToAddr(int family, const char *text, void *dest);
556 
557  friend class KExtendedSocket;
558 protected:
559  virtual void virtual_hook( int id, void* data );
560 private:
561  KInetSocketAddressPrivate* d;
562 };
563 
564 extern const ::KInetSocketAddress addressAny, addressLoopback;
565 
566 /*
567  * External definition KUnixSocketAddress
568  */
569 struct sockaddr_un;
570 
571 class KUnixSocketAddressPrivate;
584 class KDECORE_EXPORT KUnixSocketAddress: public ::KSocketAddress
585 {
586  Q_OBJECT
587 public:
591  KUnixSocketAddress();
592 
598  KUnixSocketAddress(const sockaddr_un* raw_data, ksocklen_t size);
599 
604  KUnixSocketAddress(TQCString pathname);
605 
609  virtual ~KUnixSocketAddress();
610 
617  bool setAddress(const sockaddr_un* socket_address, ksocklen_t size);
618 
624  bool setAddress(TQCString path);
625 
631  TQCString pathname() const;
632 
637  virtual TQString pretty() const;
638 
639  /*
640  * Returns the path in the form of a TQString.
641  * This can be fed into KExtendedSocket.
642  * @return the path (can be TQString::null).
643  * @see pathname()
644  */
645  virtual TQString serviceName() const;
646 
651  const sockaddr_un* address() const;
652 
658  operator const sockaddr_un*() const
659  { return address(); }
660 
671  static bool areEqualUnix(const KSocketAddress &s1, const KSocketAddress &s2, bool coreOnly);
672 
673 private:
674  void init();
675 
676  friend class KExtendedSocket;
677 protected:
678  virtual void virtual_hook( int id, void* data );
679 private:
680  KUnixSocketAddressPrivate* d;
681 };
682 
683 #endif // KSOCKADDR_H

kdecore

Skip menu "kdecore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdecore

Skip menu "kdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for kdecore by doxygen 1.8.1.2
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |