]> git.saurik.com Git - wxWidgets.git/blame - include/wx/net.h
Unix implementation of wxDialUpManager.
[wxWidgets.git] / include / wx / net.h
CommitLineData
09884325
VZ
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/net.h
3// Purpose: Network related wxWindows classes and functions
4// Author: Vadim Zeitlin
5// Modified by:
6// Created: 07.07.99
7// RCS-ID: $Id$
8// Copyright: (c) Vadim Zeitlin
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_NET_H
13#define _WX_NET_H
14
15#if wxUSE_DIALUP_MANAGER
16
17// ----------------------------------------------------------------------------
18// A class which groups functions dealing with connecting to the network from a
19// workstation using dial-up access to the net. There is at most one instance
20// of this class in the program accessed via GetDialUpManager().
21// ----------------------------------------------------------------------------
22
23/* TODO
24 *
25 * 1. more configurability for Unix: i.e. how to initiate the connection, how
26 * to check for online status, &c.
27 * 2. add a "long Dial(long connectionId = -1)" function which asks the user
28 * about which connection to dial (this may be done using native dialogs
29 * under NT, need generic dialogs for all others) and returns the identifier
30 * of the selected connection (it's opaque to the application) - it may be
31 * reused later to dial the same connection later (or use strings instead of
32 * longs may be?)
33 * 3. add an async version of dialing functions which notify the caller about
34 * the progress (or may be even start another thread to monitor it)
35 * 4. the static creation/accessor functions are not MT-safe - but is this
36 * really crucial? I think we may suppose they're always called from the
37 * main thread?
38 */
39
1c8515f9
KB
40#define WXDIALUP_MANAGER_DEFAULT_BEACONHOST "www.yahoo.com"
41
09884325
VZ
42class WXDLLEXPORT wxDialUpManager
43{
44public:
1c8515f9
KB
45 // this function should create and return the object of the
46 // platform-specific class derived from wxDialUpManager. It's implemented
47 // in the platform-specific source files.
48 static wxDialUpManager *Create();
09884325
VZ
49
50 // could the dialup manager be initialized correctly? If this function
51 // returns FALSE, no other functions will work neither, so it's a good idea
52 // to call this function and check its result before calling any other
53 // wxDialUpManager methods
54 virtual bool IsOk() const = 0;
55
56 // virtual dtor for any base class
57 virtual ~wxDialUpManager() { }
58
59 // operations
60 // ----------
61
62 // the simplest way to initiate a dial up: this function dials the given
63 // ISP (exact meaning of the parameter depends on the platform), returns
64 // TRUE on success or FALSE on failure and logs the appropriate error
65 // message in the latter case.
1c8515f9
KB
66 virtual bool Dial(const wxString& nameOfISP = "",
67 const wxString& username = "",
68 const wxString& password = "") = 0;
09884325
VZ
69
70 // hang up the currently active dial up connection
71 virtual bool HangUp() = 0;
72
73 // online status
74 // -------------
75
76 // returns TRUE if the computer is connected to the network: under Windows,
77 // this just means that a RAS connection exists, under Unix we check that
78 // the "well-known host" (as specified by SetWellKnownHost) is reachable
1c8515f9 79 virtual bool IsOnline() const = 0;
09884325
VZ
80
81 // sometimes the built-in logic for determining the online status may fail,
82 // so, in general, the user should be allowed to override it. This function
83 // allows to forcefully set the online status - whatever our internal
84 // algorithm may think about it.
85 virtual void SetOnlineStatus(bool isOnline = TRUE) = 0;
86
87 // set misc wxDialUpManager options
88 // --------------------------------
89
90 // enable automatical checks for the connection status and sending of
91 // wxEVT_DIALUP_CONNECTED/wxEVT_DIALUP_DISCONNECTED events. The interval
92 // parameter is only for Unix where we do the check manually: under
93 // Windows, the notification about the change of connection status is
94 // instantenous.
95 //
96 // Returns FALSE if couldn't set up automatic check for online status.
97 virtual bool EnableAutoCheckOnlineStatus(size_t nSeconds = 60) = 0;
98
99 // disable automatic check for connection status change - notice that the
100 // wxEVT_DIALUP_XXX events won't be sent any more neither.
101 virtual void DisableAutoCheckOnlineStatus() = 0;
102
103 // under Unix, the value of well-known host is used to check whether we're
104 // connected to the internet. It's unused under Windows, but this function
105 // is always safe to call. The default value is www.yahoo.com.
1c8515f9
KB
106 virtual void SetWellKnownHost(const wxString& hostname,
107 int portno = 80) = 0;
108 /** Sets the commands to start up the network and to hang up
109 again. Used by the Unix implementations only.
110 */
111 virtual void SetConnectCommand(const wxString &command = "/usr/bin/pon",
112 const wxString &hupcmd = "/usr/bin/poff")
113 { }
09884325
VZ
114};
115
116// ----------------------------------------------------------------------------
117// DIALUP events processing
118// ----------------------------------------------------------------------------
119
120// the event class for the dialup events
121class WXDLLEXPORT wxDialUpEvent : public wxEvent
122{
123public:
124 wxDialUpEvent(bool isConnected) : wxEvent(isConnected)
125 {
126 SetEventType(isConnected ? wxEVT_DIALUP_CONNECTED
127 : wxEVT_DIALUP_DISCONNECTED);
128 }
129
130 // is this a CONNECTED or DISCONNECTED event?
131 bool IsConnectedEvent() const { return m_id != 0; }
132};
133
134// the type of dialup event handler function
135typedef void (wxObject::*wxDialUpEventFunction)(wxDialUpEvent&);
136
137// macros to catch dialup events
138#define EVT_DIALUP_CONNECTED(func) { wxEVT_DIALUP_CONNECTED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxDialUpEventFunction) & func, NULL},
139#define EVT_DIALUP_DISCONNECTED(func) { wxEVT_DIALUP_DISCONNECTED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxDialUpEventFunction) & func, NULL},
140
141#endif // wxUSE_DIALUP_MANAGER
142
143#endif // _WX_NET_H