    indexing
    	legal: "See notice at end of class."
    	status: "See notice at end of class."

    class interface
    	WEL_SOCKET_POLLER

    create
    	make (a_window: WEL_WINDOW; a_timer_id: INTEGER_32)
    			-- Create WEL_TIMER and socket_poller.
    		require
    			not_window_void: a_window /= Void
    		ensure
    			window: parent_window = a_window
    			id: timer_id = a_timer_id

    	make_active (a_window: WEL_WINDOW; a_timer_id: INTEGER_32; a_delay: INTEGER_32)
    			-- Enable timer and create active socket_poller.
    		require
    			not_window_void: a_window /= Void
    		ensure
    			window: parent_window = a_window
    			id: timer_id = a_timer_id
    			poller_active: is_poller_active

    feature -- Access

    	generating_type: STRING_8
    			-- Name of current object's generating type
    			-- (type of which it is a direct instance)
    			-- (from ANY)

    	generator: STRING_8
    			-- Name of current object's generating class
    			-- (base class of the type of which it is a direct instance)
    			-- (from ANY)

    	message_information: WEL_MESSAGE_INFORMATION
    			-- Information associated to the message
    			-- (from WEL_COMMAND)

    	wm_activate: INTEGER_32 is 6
    			-- Declared in Windows as WM_ACTIVATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_activateapp: INTEGER_32 is 28
    			-- Declared in Windows as WM_ACTIVATEAPP
    			-- (from WEL_WM_CONSTANTS)

    	wm_afxfirst: INTEGER_32 is 864
    			-- Declared in Windows as WM_AFXFIRST
    			-- (from WEL_WM_CONSTANTS)

    	wm_afxlast: INTEGER_32 is 895
    			-- Declared in Windows as WM_AFXLAST
    			-- (from WEL_WM_CONSTANTS)

    	wm_app: INTEGER_32 is 32768
    			-- Declared in Windows as WM_APP
    			-- (from WEL_WM_CONSTANTS)

    	wm_appcommand: INTEGER_32 is 793
    			-- Declared in Windows as WM_APPCOMMAND
    			-- (from WEL_WM_CONSTANTS)

    	wm_askcbformatname: INTEGER_32 is 780
    			-- Declared in Windows as WM_ASKCBFORMATNAME
    			-- (from WEL_WM_CONSTANTS)

    	wm_canceljournal: INTEGER_32 is 75
    			-- Declared in Windows as WM_CANCELJOURNAL
    			-- (from WEL_WM_CONSTANTS)

    	wm_cancelmode: INTEGER_32 is 31
    			-- Declared in Windows as WM_CANCELMODE
    			-- (from WEL_WM_CONSTANTS)

    	wm_capturechanged: INTEGER_32 is 533
    			-- Declared in Windows as WM_CAPTURECHANGED
    			-- (from WEL_WM_CONSTANTS)

    	wm_changecbchain: INTEGER_32 is 781
    			-- Declared in Windows as WM_CHANGECBCHAIN
    			-- (from WEL_WM_CONSTANTS)

    	wm_changeuistate: INTEGER_32 is 295
    			-- Declared in Windows as WM_CHANGEUISTATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_char: INTEGER_32 is 258
    			-- Declared in Windows as WM_CHAR
    			-- (from WEL_WM_CONSTANTS)

    	wm_chartoitem: INTEGER_32 is 47
    			-- Declared in Windows as WM_CHARTOITEM
    			-- (from WEL_WM_CONSTANTS)

    	wm_childactivate: INTEGER_32 is 34
    			-- Declared in Windows as WM_CHILDACTIVATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_clear: INTEGER_32 is 771
    			-- Declared in Windows as WM_CLEAR
    			-- (from WEL_WM_CONSTANTS)

    	wm_close: INTEGER_32 is 16
    			-- Declared in Windows as WM_CLOSE
    			-- (from WEL_WM_CONSTANTS)

    	wm_command: INTEGER_32 is 273
    			-- Declared in Windows as WM_COMMAND
    			-- (from WEL_WM_CONSTANTS)

    	wm_commnotify: INTEGER_32 is 68
    			-- Declared in Windows as WM_COMMNOTIFY
    			-- (from WEL_WM_CONSTANTS)

    	wm_compacting: INTEGER_32 is 65
    			-- Declared in Windows as WM_COMPACTING
    			-- (from WEL_WM_CONSTANTS)

    	wm_compareitem: INTEGER_32 is 57
    			-- Declared in Windows as WM_COMPAREITEM
    			-- (from WEL_WM_CONSTANTS)

    	wm_contextmenu: INTEGER_32 is 123
    			-- Declared in Windows as WM_CONTEXTMENU
    			-- (from WEL_WM_CONSTANTS)

    	wm_copy: INTEGER_32 is 769
    			-- Declared in Windows as WM_COPY
    			-- (from WEL_WM_CONSTANTS)

    	wm_copydata: INTEGER_32 is 74
    			-- Declared in Windows as WM_COPYDATA
    			-- (from WEL_WM_CONSTANTS)

    	wm_create: INTEGER_32 is 1
    			-- Declared in Windows as WM_CREATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_ctlcolordialog: INTEGER_32 is 310
    			-- Declared in Windows as WM_CTLCOLORDIALOG
    			-- (from WEL_WM_CONSTANTS)

    	wm_cut: INTEGER_32 is 768
    			-- Declared in Windows as WM_CUT
    			-- (from WEL_WM_CONSTANTS)

    	wm_deadchar: INTEGER_32 is 259
    			-- Declared in Windows as WM_DEADCHAR
    			-- (from WEL_WM_CONSTANTS)

    	wm_deleteitem: INTEGER_32 is 45
    			-- Declared in Windows as WM_DELETEITEM
    			-- (from WEL_WM_CONSTANTS)

    	wm_destroy: INTEGER_32 is 2
    			-- Declared in Windows as WM_DESTROY
    			-- (from WEL_WM_CONSTANTS)

    	wm_destroyclipboard: INTEGER_32 is 775
    			-- Declared in Windows as WM_DESTROYCLIPBOARD
    			-- (from WEL_WM_CONSTANTS)

    	wm_devicechange: INTEGER_32 is 537
    			-- Declared in Windows as WM_DEVICECHANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_devmodechange: INTEGER_32 is 27
    			-- Declared in Windows as WM_DEVMODECHANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_displaychange: INTEGER_32 is 126
    			-- Declared in Windows as WM_DISPLAYCHANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_drawclipboard: INTEGER_32 is 776
    			-- Declared in Windows as WM_DRAWCLIPBOARD
    			-- (from WEL_WM_CONSTANTS)

    	wm_drawitem: INTEGER_32 is 43
    			-- Declared in Windows as WM_DRAWITEM
    			-- (from WEL_WM_CONSTANTS)

    	wm_dropfiles: INTEGER_32 is 563
    			-- Declared in Windows as WM_DROPFILES
    			-- (from WEL_WM_CONSTANTS)

    	wm_enable: INTEGER_32 is 10
    			-- Declared in Windows as WM_ENABLE
    			-- (from WEL_WM_CONSTANTS)

    	wm_endsession: INTEGER_32 is 22
    			-- Declared in Windows as WM_ENDSESSION
    			-- (from WEL_WM_CONSTANTS)

    	wm_enteridle: INTEGER_32 is 289
    			-- Declared in Windows as WM_ENTERIDLE
    			-- (from WEL_WM_CONSTANTS)

    	wm_entermenuloop: INTEGER_32 is 529
    			-- Declared in Windows as WM_ENTERMENULOOP
    			-- (from WEL_WM_CONSTANTS)

    	wm_entersizemove: INTEGER_32 is 561
    			-- Declared in Windows as WM_ENTERSIZEMOVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_erasebkgnd: INTEGER_32 is 20
    			-- Declared in Windows as WM_ERASEBKGND
    			-- (from WEL_WM_CONSTANTS)

    	wm_exitmenuloop: INTEGER_32 is 530
    			-- Declared in Windows as WM_EXITMENULOOP
    			-- (from WEL_WM_CONSTANTS)

    	wm_exitsizemove: INTEGER_32 is 562
    			-- Declared in Windows as WM_EXITSIZEMOVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_fontchange: INTEGER_32 is 29
    			-- Declared in Windows as WM_FONTCHANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_getdlgcode: INTEGER_32 is 135
    			-- Declared in Windows as WM_GETDLGCODE
    			-- (from WEL_WM_CONSTANTS)

    	wm_getfont: INTEGER_32 is 49
    			-- Declared in Windows as WM_GETFONT
    			-- (from WEL_WM_CONSTANTS)

    	wm_gethotkey: INTEGER_32 is 51
    			-- Declared in Windows as WM_GETHOTKEY
    			-- (from WEL_WM_CONSTANTS)

    	wm_geticon: INTEGER_32 is 127
    			-- Declared in Windows as WM_GETICON
    			-- (from WEL_WM_CONSTANTS)

    	wm_getminmaxinfo: INTEGER_32 is 36
    			-- Declared in Windows as WM_GETMINMAXINFO
    			-- (from WEL_WM_CONSTANTS)

    	wm_getobject: INTEGER_32 is 61
    			-- Declared in Windows as WM_GETOBJECT
    			-- (from WEL_WM_CONSTANTS)

    	wm_gettext: INTEGER_32 is 13
    			-- Declared in Windows as WM_GETTEXT
    			-- (from WEL_WM_CONSTANTS)

    	wm_gettextlength: INTEGER_32 is 14
    			-- Declared in Windows as WM_GETTEXTLENGTH
    			-- (from WEL_WM_CONSTANTS)

    	wm_handheldfirst: INTEGER_32 is 856
    			-- Declared in Windows as WM_HANDHELDFIRST
    			-- (from WEL_WM_CONSTANTS)

    	wm_handheldlast: INTEGER_32 is 863
    			-- Declared in Windows as WM_HANDHELDLAST
    			-- (from WEL_WM_CONSTANTS)

    	wm_help: INTEGER_32 is 83
    			-- Declared in Windows as WM_HELP
    			-- (from WEL_WM_CONSTANTS)

    	wm_hotkey: INTEGER_32 is 786
    			-- Declared in Windows as WM_HOTKEY
    			-- (from WEL_WM_CONSTANTS)

    	wm_hscroll: INTEGER_32 is 276
    			-- Declared in Windows as WM_HSCROLL
    			-- (from WEL_WM_CONSTANTS)

    	wm_hscrollclipboard: INTEGER_32 is 782
    			-- Declared in Windows as WM_HSCROLLCLIPBOARD
    			-- (from WEL_WM_CONSTANTS)

    	wm_iconerasebkgnd: INTEGER_32 is 39
    			-- Declared in Windows as WM_ICONERASEBKGND
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_char: INTEGER_32 is 646
    			-- Declared in Windows as WM_IME_CHAR
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_composition: INTEGER_32 is 271
    			-- Declared in Windows as WM_IME_COMPOSITION
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_compositionfull: INTEGER_32 is 644
    			-- Declared in Windows as WM_IME_COMPOSITIONFULL
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_control: INTEGER_32 is 643
    			-- Declared in Windows as WM_IME_CONTROL
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_endcomposition: INTEGER_32 is 270
    			-- Declared in Windows as WM_IME_ENDCOMPOSITION
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_keydown: INTEGER_32 is 656
    			-- Declared in Windows as WM_IME_KEYDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_keylast: INTEGER_32
    			-- Declared in Windows as WM_IME_KEYLAST
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_keyup: INTEGER_32 is 657
    			-- Declared in Windows as WM_IME_KEYUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_notify: INTEGER_32 is 642
    			-- Declared in Windows as WM_IME_NOTIFY
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_request: INTEGER_32 is 648
    			-- Declared in Windows as WM_IME_REQUEST
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_select: INTEGER_32 is 645
    			-- Declared in Windows as WM_IME_SELECT
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_setcontext: INTEGER_32 is 641
    			-- Declared in Windows as WM_IME_SETCONTEXT
    			-- (from WEL_WM_CONSTANTS)

    	wm_ime_startcomposition: INTEGER_32 is 269
    			-- Declared in Windows as WM_IME_STARTCOMPOSITION
    			-- (from WEL_WM_CONSTANTS)

    	wm_initdialog: INTEGER_32 is 272
    			-- Declared in Windows as WM_INITDIALOG
    			-- (from WEL_WM_CONSTANTS)

    	wm_initmenu: INTEGER_32 is 278
    			-- Declared in Windows as WM_INITMENU
    			-- (from WEL_WM_CONSTANTS)

    	wm_initmenupopup: INTEGER_32 is 279
    			-- Declared in Windows as WM_INITMENUPOPUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_inputlangchange: INTEGER_32 is 81
    			-- Declared in Windows as WM_INPUTLANGCHANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_inputlangchangerequest: INTEGER_32 is 80
    			-- Declared in Windows as WM_INPUTLANGCHANGEREQUEST
    			-- (from WEL_WM_CONSTANTS)

    	wm_keydown: INTEGER_32 is 256
    			-- Declared in Windows as WM_KEYDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_keyfirst: INTEGER_32 is 256
    			-- Declared in Windows as WM_KEYFIRST
    			-- (from WEL_WM_CONSTANTS)

    	wm_keylast: INTEGER_32
    			-- Declared in Windows as WM_KEYLAST
    			-- (from WEL_WM_CONSTANTS)

    	wm_keyup: INTEGER_32 is 257
    			-- Declared in Windows as WM_KEYUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_killfocus: INTEGER_32 is 8
    			-- Declared in Windows as WM_KILLFOCUS
    			-- (from WEL_WM_CONSTANTS)

    	wm_lbuttondblclk: INTEGER_32 is 515
    			-- Declared in Windows as WM_LBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_lbuttondown: INTEGER_32 is 513
    			-- Declared in Windows as WM_LBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_lbuttonup: INTEGER_32 is 514
    			-- Declared in Windows as WM_LBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_mbuttondblclk: INTEGER_32 is 521
    			-- Declared in Windows as WM_MBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_mbuttondown: INTEGER_32 is 519
    			-- Declared in Windows as WM_MBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_mbuttonup: INTEGER_32 is 520
    			-- Declared in Windows as WM_MBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdiactivate: INTEGER_32 is 546
    			-- Declared in Windows as WM_MDIACTIVATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdicascade: INTEGER_32 is 551
    			-- Declared in Windows as WM_MDICASCADE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdicreate: INTEGER_32 is 544
    			-- Declared in Windows as WM_MDICREATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdidestroy: INTEGER_32 is 545
    			-- Declared in Windows as WM_MDIDESTROY
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdigetactive: INTEGER_32 is 553
    			-- Declared in Windows as WM_MDIGETACTIVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdiiconarrange: INTEGER_32 is 552
    			-- Declared in Windows as WM_MDIICONARRANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdimaximize: INTEGER_32 is 549
    			-- Declared in Windows as WM_MDIMAXIMIZE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdinext: INTEGER_32 is 548
    			-- Declared in Windows as WM_MDINEXT
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdirefreshmenu: INTEGER_32 is 564
    			-- Declared in Windows as WM_MDIREFRESHMENU
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdirestore: INTEGER_32 is 547
    			-- Declared in Windows as WM_MDIRESTORE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mdisetmenu: INTEGER_32 is 560
    			-- Declared in Windows as WM_MDISETMENU
    			-- (from WEL_WM_CONSTANTS)

    	wm_mditile: INTEGER_32 is 550
    			-- Declared in Windows as WM_MDITILE
    			-- (from WEL_WM_CONSTANTS)

    	wm_measureitem: INTEGER_32 is 44
    			-- Declared in Windows as WM_MEASUREITEM
    			-- (from WEL_WM_CONSTANTS)

    	wm_menuchar: INTEGER_32 is 288
    			-- Declared in Windows as WM_MENUCHAR
    			-- (from WEL_WM_CONSTANTS)

    	wm_menucommand: INTEGER_32 is 294
    			-- Declared in Windows as WM_MENUCOMMAND
    			-- (from WEL_WM_CONSTANTS)

    	wm_menudrag: INTEGER_32 is 291
    			-- Declared in Windows as WM_MENUDRAG
    			-- (from WEL_WM_CONSTANTS)

    	wm_menugetobject: INTEGER_32 is 292
    			-- Declared in Windows as WM_MENUGETOBJECT
    			-- (from WEL_WM_CONSTANTS)

    	wm_menurbuttonup: INTEGER_32 is 290
    			-- Declared in Windows as WM_MENURBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_menuselect: INTEGER_32 is 287
    			-- Declared in Windows as WM_MENUSELECT
    			-- (from WEL_WM_CONSTANTS)

    	wm_mouseactivate: INTEGER_32 is 33
    			-- Declared in Windows as WM_MOUSEACTIVATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mousefirst: INTEGER_32 is 512
    			-- Declared in Windows as WM_MOUSEFIRST
    			-- (from WEL_WM_CONSTANTS)

    	wm_mousehover: INTEGER_32 is 673
    			-- Require Windows98, Windows NT 4.0 or later
    			-- Declared in Windows as WM_MOUSEHOVER
    			-- (from WEL_WM_CONSTANTS)

    	wm_mouselast: INTEGER_32
    			-- Declared in Windows as WM_MOUSELAST
    			-- (from WEL_WM_CONSTANTS)

    	wm_mouseleave: INTEGER_32 is 675
    			-- Require Windows98, Windows NT 4.0 or later
    			-- Declared in Windows as WM_MOUSELEAVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mousemove: INTEGER_32 is 512
    			-- Declared in Windows as WM_MOUSEMOVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_mousewheel: INTEGER_32 is 522
    			-- Declared in Windows as WM_MOUSEWHEEL
    			-- (from WEL_WM_CONSTANTS)

    	wm_move: INTEGER_32 is 3
    			-- Declared in Windows as WM_MOVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_moving: INTEGER_32 is 534
    			-- Declared in Windows as WM_MOVING
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncactivate: INTEGER_32 is 134
    			-- Declared in Windows as WM_NCACTIVATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_nccalcsize: INTEGER_32 is 131
    			-- Declared in Windows as WM_NCCALCSIZE
    			-- (from WEL_WM_CONSTANTS)

    	wm_nccreate: INTEGER_32 is 129
    			-- Declared in Windows as WM_NCCREATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncdestroy: INTEGER_32 is 130
    			-- Declared in Windows as WM_NCDESTROY
    			-- (from WEL_WM_CONSTANTS)

    	wm_nchittest: INTEGER_32 is 132
    			-- Declared in Windows as WM_NCHITTEST
    			-- (from WEL_WM_CONSTANTS)

    	wm_nclbuttondblclk: INTEGER_32 is 163
    			-- Declared in Windows as WM_NCLBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_nclbuttondown: INTEGER_32 is 161
    			-- Declared in Windows as WM_NCLBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_nclbuttonup: INTEGER_32 is 162
    			-- Declared in Windows as WM_NCLBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncmbuttondblclk: INTEGER_32 is 169
    			-- Declared in Windows as WM_NCMBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncmbuttondown: INTEGER_32 is 167
    			-- Declared in Windows as WM_NCMBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncmbuttonup: INTEGER_32 is 168
    			-- Declared in Windows as WM_NCMBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncmousehover: INTEGER_32 is 672
    			-- Require Windows98, Windows NT 5.0 or later
    			-- Declared in Windows as WM_NCMOUSEHOVER
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncmouseleave: INTEGER_32 is 674
    			-- Require Windows98, Windows NT 5.0 or later
    			-- Declared in Windows as WM_NCMOUSELEAVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncmousemove: INTEGER_32 is 160
    			-- Declared in Windows as WM_NCMOUSEMOVE
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncpaint: INTEGER_32 is 133
    			-- Declared in Windows as WM_NCPAINT
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncrbuttondblclk: INTEGER_32 is 166
    			-- Declared in Windows as WM_NCRBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncrbuttondown: INTEGER_32 is 164
    			-- Declared in Windows as WM_NCRBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncrbuttonup: INTEGER_32 is 165
    			-- Declared in Windows as WM_NCRBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncxbuttondblclk: INTEGER_32 is 173
    			-- Declared in Windows as WM_NCXBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncxbuttondown: INTEGER_32 is 171
    			-- Declared in Windows as WM_NCXBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_ncxbuttonup: INTEGER_32 is 172
    			-- Declared in Windows as WM_NCXBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_nextdlgctl: INTEGER_32 is 40
    			-- Declared in Windows as WM_NEXTDLGCTL
    			-- (from WEL_WM_CONSTANTS)

    	wm_nextmenu: INTEGER_32 is 531
    			-- Declared in Windows as WM_NEXTMENU
    			-- (from WEL_WM_CONSTANTS)

    	wm_notify: INTEGER_32 is 78
    			-- Declared in Windows as WM_NOTIFY
    			-- (from WEL_WM_CONSTANTS)

    	wm_notifyformat: INTEGER_32 is 85
    			-- Declared in Windows as WM_NOTIFYFORMAT
    			-- (from WEL_WM_CONSTANTS)

    	wm_null: INTEGER_32 is 0
    			-- Declared in Windows as WM_NULL
    			-- (from WEL_WM_CONSTANTS)

    	wm_paint: INTEGER_32 is 15
    			-- Declared in Windows as WM_PAINT
    			-- (from WEL_WM_CONSTANTS)

    	wm_paintclipboard: INTEGER_32 is 777
    			-- Declared in Windows as WM_PAINTCLIPBOARD
    			-- (from WEL_WM_CONSTANTS)

    	wm_painticon: INTEGER_32 is 38
    			-- Declared in Windows as WM_PAINTICON
    			-- (from WEL_WM_CONSTANTS)

    	wm_palettechanged: INTEGER_32 is 785
    			-- Declared in Windows as WM_PALETTECHANGED
    			-- (from WEL_WM_CONSTANTS)

    	wm_paletteischanging: INTEGER_32 is 784
    			-- Declared in Windows as WM_PALETTEISCHANGING
    			-- (from WEL_WM_CONSTANTS)

    	wm_parentnotify: INTEGER_32 is 528
    			-- Declared in Windows as WM_PARENTNOTIFY
    			-- (from WEL_WM_CONSTANTS)

    	wm_paste: INTEGER_32 is 770
    			-- Declared in Windows as WM_PASTE
    			-- (from WEL_WM_CONSTANTS)

    	wm_penwinfirst: INTEGER_32 is 896
    			-- Declared in Windows as WM_PENWINFIRST
    			-- (from WEL_WM_CONSTANTS)

    	wm_penwinlast: INTEGER_32 is 911
    			-- Declared in Windows as WM_PENWINLAST
    			-- (from WEL_WM_CONSTANTS)

    	wm_power: INTEGER_32 is 72
    			-- Declared in Windows as WM_POWER
    			-- (from WEL_WM_CONSTANTS)

    	wm_powerbroadcast: INTEGER_32 is 536
    			-- Declared in Windows as WM_POWERBROADCAST
    			-- (from WEL_WM_CONSTANTS)

    	wm_print: INTEGER_32 is 791
    			-- Declared in Windows as WM_PRINT
    			-- (from WEL_WM_CONSTANTS)

    	wm_printclient: INTEGER_32 is 792
    			-- Declared in Windows as WM_PRINTCLIENT
    			-- (from WEL_WM_CONSTANTS)

    	wm_querydragicon: INTEGER_32 is 55
    			-- Declared in Windows as WM_QUERYDRAGICON
    			-- (from WEL_WM_CONSTANTS)

    	wm_queryendsession: INTEGER_32 is 17
    			-- Declared in Windows as WM_QUERYENDSESSION
    			-- (from WEL_WM_CONSTANTS)

    	wm_querynewpalette: INTEGER_32 is 783
    			-- Declared in Windows as WM_QUERYNEWPALETTE
    			-- (from WEL_WM_CONSTANTS)

    	wm_queryopen: INTEGER_32 is 19
    			-- Declared in Windows as WM_QUERYOPEN
    			-- (from WEL_WM_CONSTANTS)

    	wm_queryuistate: INTEGER_32 is 297
    			-- Declared in Windows as WM_QUERYUISTATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_queuesync: INTEGER_32 is 35
    			-- Declared in Windows as WM_QUEUESYNC
    			-- (from WEL_WM_CONSTANTS)

    	wm_quit: INTEGER_32 is 18
    			-- Declared in Windows as WM_QUIT
    			-- (from WEL_WM_CONSTANTS)

    	wm_rbuttondblclk: INTEGER_32 is 518
    			-- Declared in Windows as WM_RBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_rbuttondown: INTEGER_32 is 516
    			-- Declared in Windows as WM_RBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_rbuttonup: INTEGER_32 is 517
    			-- Declared in Windows as WM_RBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_renderallformats: INTEGER_32 is 774
    			-- Declared in Windows as WM_RENDERALLFORMATS
    			-- (from WEL_WM_CONSTANTS)

    	wm_renderformat: INTEGER_32 is 773
    			-- Declared in Windows as WM_RENDERFORMAT
    			-- (from WEL_WM_CONSTANTS)

    	wm_setcursor: INTEGER_32 is 32
    			-- Declared in Windows as WM_SETCURSOR
    			-- (from WEL_WM_CONSTANTS)

    	wm_setfocus: INTEGER_32 is 7
    			-- Declared in Windows as WM_SETFOCUS
    			-- (from WEL_WM_CONSTANTS)

    	wm_setfont: INTEGER_32 is 48
    			-- Declared in Windows as WM_SETFONT
    			-- (from WEL_WM_CONSTANTS)

    	wm_sethotkey: INTEGER_32 is 50
    			-- Declared in Windows as WM_SETHOTKEY
    			-- (from WEL_WM_CONSTANTS)

    	wm_seticon: INTEGER_32 is 128
    			-- Declared in Windows as WM_SETICON
    			-- (from WEL_WM_CONSTANTS)

    	wm_setredraw: INTEGER_32 is 11
    			-- Declared in Windows as WM_SETREDRAW
    			-- (from WEL_WM_CONSTANTS)

    	wm_settext: INTEGER_32 is 12
    			-- Declared in Windows as WM_SETTEXT
    			-- (from WEL_WM_CONSTANTS)

    	wm_settingchange: INTEGER_32 is 26
    			-- Declared in Windows as WM_WININICHANGE
    			-- Was declared in WEL_WM_CONSTANTS as synonym of Wm_wininichange.
    			-- (from WEL_WM_CONSTANTS)

    	wm_showwindow: INTEGER_32 is 24
    			-- Declared in Windows as WM_SHOWWINDOW
    			-- (from WEL_WM_CONSTANTS)

    	wm_size: INTEGER_32 is 5
    			-- Declared in Windows as WM_SIZE
    			-- (from WEL_WM_CONSTANTS)

    	wm_sizeclipboard: INTEGER_32 is 779
    			-- Declared in Windows as WM_SIZECLIPBOARD
    			-- (from WEL_WM_CONSTANTS)

    	wm_sizing: INTEGER_32 is 532
    			-- Declared in Windows as WM_SIZING
    			-- (from WEL_WM_CONSTANTS)

    	wm_spoolerstatus: INTEGER_32 is 42
    			-- Declared in Windows as WM_SPOOLERSTATUS
    			-- (from WEL_WM_CONSTANTS)

    	wm_stylechanged: INTEGER_32 is 125
    			-- Declared in Windows as WM_STYLECHANGED
    			-- (from WEL_WM_CONSTANTS)

    	wm_stylechanging: INTEGER_32 is 124
    			-- Declared in Windows as WM_STYLECHANGING
    			-- (from WEL_WM_CONSTANTS)

    	wm_syncpaint: INTEGER_32 is 136
    			-- Declared in Windows as WM_SYNCPAINT
    			-- (from WEL_WM_CONSTANTS)

    	wm_syschar: INTEGER_32 is 262
    			-- Declared in Windows as WM_SYSCHAR
    			-- (from WEL_WM_CONSTANTS)

    	wm_syscolorchange: INTEGER_32 is 21
    			-- Declared in Windows as WM_SYSCOLORCHANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_syscommand: INTEGER_32 is 274
    			-- Declared in Windows as WM_SYSCOMMAND
    			-- (from WEL_WM_CONSTANTS)

    	wm_sysdeadchar: INTEGER_32 is 263
    			-- Declared in Windows as WM_SYSDEADCHAR
    			-- (from WEL_WM_CONSTANTS)

    	wm_syskeydown: INTEGER_32 is 260
    			-- Declared in Windows as WM_SYSKEYDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_syskeyup: INTEGER_32 is 261
    			-- Declared in Windows as WM_SYSKEYUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_tcard: INTEGER_32 is 82
    			-- Declared in Windows as WM_TCARD
    			-- (from WEL_WM_CONSTANTS)

    	wm_themechanged: INTEGER_32 is 794
    			-- Declared in Windows as WM_THEMECHANGED
    			-- (from WEL_WM_CONSTANTS)

    	wm_timechange: INTEGER_32 is 30
    			-- Declared in Windows as WM_TIMECHANGE
    			-- (from WEL_WM_CONSTANTS)

    	wm_timer: INTEGER_32 is 275
    			-- Declared in Windows as WM_TIMER
    			-- (from WEL_WM_CONSTANTS)

    	wm_undo: INTEGER_32 is 772
    			-- Declared in Windows as WM_UNDO
    			-- (from WEL_WM_CONSTANTS)

    	wm_uninitmenupopup: INTEGER_32 is 293
    			-- Declared in Windows as WM_UNINITMENUPOPUP
    			-- (from WEL_WM_CONSTANTS)

    	wm_updateuistate: INTEGER_32 is 296
    			-- Declared in Windows as WM_UPDATEUISTATE
    			-- (from WEL_WM_CONSTANTS)

    	wm_user: INTEGER_32 is 1024
    			-- Declared in Windows as WM_USER
    			-- (from WEL_WM_CONSTANTS)

    	wm_userchanged: INTEGER_32 is 84
    			-- Declared in Windows as WM_USERCHANGED
    			-- (from WEL_WM_CONSTANTS)

    	wm_vkeytoitem: INTEGER_32 is 46
    			-- Declared in Windows as WM_VKEYTOITEM
    			-- (from WEL_WM_CONSTANTS)

    	wm_vscroll: INTEGER_32 is 277
    			-- Declared in Windows as WM_VSCROLL
    			-- (from WEL_WM_CONSTANTS)

    	wm_vscrollclipboard: INTEGER_32 is 778
    			-- Declared in Windows as WM_VSCROLLCLIPBOARD
    			-- (from WEL_WM_CONSTANTS)

    	wm_windowposchanged: INTEGER_32 is 71
    			-- Declared in Windows as WM_WINDOWPOSCHANGED
    			-- (from WEL_WM_CONSTANTS)

    	wm_windowposchanging: INTEGER_32 is 70
    			-- Declared in Windows as WM_WINDOWPOSCHANGING
    			-- (from WEL_WM_CONSTANTS)

    	wm_wininichange: INTEGER_32 is 26
    			-- Declared in Windows as WM_WININICHANGE
    			-- Was declared in WEL_WM_CONSTANTS as synonym of Wm_settingchange.
    			-- (from WEL_WM_CONSTANTS)

    	wm_xbuttondblclk: INTEGER_32 is 525
    			-- Declared in Windows as WM_XBUTTONDBLCLK
    			-- (from WEL_WM_CONSTANTS)

    	wm_xbuttondown: INTEGER_32 is 523
    			-- Declared in Windows as WM_XBUTTONDOWN
    			-- (from WEL_WM_CONSTANTS)

    	wm_xbuttonup: INTEGER_32 is 524
    			-- Declared in Windows as WM_XBUTTONUP
    			-- (from WEL_WM_CONSTANTS)

    feature -- Comparison

    	frozen deep_equal (some: ANY; other: like arg #1): BOOLEAN
    			-- Are `some' and `other' either both void
    			-- or attached to isomorphic object structures?
    			-- (from ANY)
    		ensure -- from ANY
    			shallow_implies_deep: standard_equal (some, other) implies Result
    			both_or_none_void: (some = Void) implies (Result = (other = Void))
    			same_type: (Result and (some /= Void)) implies some.same_type (other)
    			symmetric: Result implies deep_equal (other, some)

    	frozen equal (some: ANY; other: like arg #1): BOOLEAN
    			-- Are `some' and `other' either both void or attached
    			-- to objects considered equal?
    			-- (from ANY)
    		ensure -- from ANY
    			definition: Result = (some = Void and other = Void) or else ((some /= Void and other /= Void) and then some.is_equal (other))

    	is_equal (other: like Current): BOOLEAN
    			-- Is `other' attached to an object considered
    			-- equal to current object?
    			-- (from ANY)
    		require -- from ANY
    			other_not_void: other /= Void
    		ensure -- from ANY
    			symmetric: Result implies other.is_equal (Current)
    			consistent: standard_is_equal (other) implies Result

    	frozen standard_equal (some: ANY; other: like arg #1): BOOLEAN
    			-- Are `some' and `other' either both void or attached to
    			-- field-by-field identical objects of the same type?
    			-- Always uses default object comparison criterion.
    			-- (from ANY)
    		ensure -- from ANY
    			definition: Result = (some = Void and other = Void) or else ((some /= Void and other /= Void) and then some.standard_is_equal (other))

    	frozen standard_is_equal (other: like Current): BOOLEAN
    			-- Is `other' attached to an object of the same type
    			-- as current object, and field-by-field identical to it?
    			-- (from ANY)
    		require -- from ANY
    			other_not_void: other /= Void
    		ensure -- from ANY
    			same_type: Result implies same_type (other)
    			symmetric: Result implies other.standard_is_equal (Current)

    feature -- Status report

    	conforms_to (other: ANY): BOOLEAN
    			-- Does type of current object conform to type
    			-- of `other' (as per Eiffel: The Language, chapter 13)?
    			-- (from ANY)
    		require -- from ANY
    			other_not_void: other /= Void

    	same_type (other: ANY): BOOLEAN
    			-- Is type of current object identical to type of `other'?
    			-- (from ANY)
    		require -- from ANY
    			other_not_void: other /= Void
    		ensure -- from ANY
    			definition: Result = (conforms_to (other) and other.conforms_to (Current))

    feature -- Element change

    	set_message_information (mi: WEL_MESSAGE_INFORMATION)
    			-- Set message_information with `mi'.
    			-- (from WEL_COMMAND)
    		ensure -- from WEL_COMMAND
    			message_information_set: message_information = mi

    feature -- Duplication

    	copy (other: like Current)
    			-- Update current object using fields of object attached
    			-- to `other', so as to yield equal objects.
    			-- (from ANY)
    		require -- from ANY
    			other_not_void: other /= Void
    			type_identity: same_type (other)
    		ensure -- from ANY
    			is_equal: is_equal (other)

    	frozen deep_copy (other: like Current)
    			-- Effect equivalent to that of:
    			--		copy (`other' . deep_twin)
    			-- (from ANY)
    		require -- from ANY
    			other_not_void: other /= Void
    		ensure -- from ANY
    			deep_equal: deep_equal (Current, other)

    	frozen deep_twin: like Current
    			-- New object structure recursively duplicated from Current.
    			-- (from ANY)
    		ensure -- from ANY
    			deep_equal: deep_equal (Current, Result)

    	frozen standard_copy (other: like Current)
    			-- Copy every field of `other' onto corresponding field
    			-- of current object.
    			-- (from ANY)
    		require -- from ANY
    			other_not_void: other /= Void
    			type_identity: same_type (other)
    		ensure -- from ANY
    			is_standard_equal: standard_is_equal (other)

    	frozen standard_twin: like Current
    			-- New object field-by-field identical to `other'.
    			-- Always uses default copying semantics.
    			-- (from ANY)
    		ensure -- from ANY
    			standard_twin_not_void: Result /= Void
    			equal: standard_equal (Result, Current)

    	frozen twin: like Current
    			-- New object equal to `Current'
    			-- twin calls copy; to change copying/twining semantics, redefine copy.
    			-- (from ANY)
    		ensure -- from ANY
    			twin_not_void: Result /= Void
    			is_equal: Result.is_equal (Current)

    feature -- Basic operations

    	frozen default: like Current
    			-- Default value of object's type
    			-- (from ANY)

    	frozen default_pointer: POINTER
    			-- Default value of type `POINTER'
    			-- (Avoid the need to write `p'.default for
    			-- some `p' of type `POINTER'.)
    			-- (from ANY)

    	default_rescue
    			-- Process exception for routines with no Rescue clause.
    			-- (Default: do nothing.)
    			-- (from ANY)

    	frozen do_nothing
    			-- Execute a null action.
    			-- (from ANY)

    feature -- Activation

    	is_auto_discard: BOOLEAN
    			-- Subscription is removed at call-back.
    			-- (from SOCKET_POLLER)

    	is_poll_all: BOOLEAN
    			-- Are all subscribed socket polled at each timer call-
    			-- back or just one?
    			-- (from SOCKET_POLLER)

    	is_poller_active: BOOLEAN
    			-- Is the poller active?

    	set_active (a_delay: INTEGER_32)
    			-- Set `a_poll_delay' to `delay_time'.
    		require -- from SOCKET_POLLER
    			a_poll_delay_positive_and_not_null: a_delay > 0
    			poller_inactive: not is_poller_active

    	set_auto_discard
    			-- Poller will call back only once.
    			-- (from SOCKET_POLLER)

    	set_inactive
    			-- Stop polling the socket.
    		require -- from SOCKET_POLLER
    			poller_active: is_poller_active

    	set_no_discard
    			-- Subsciption to polling remains after call-back.
    			-- (from SOCKET_POLLER)

    	set_poll_all
    			-- All subscribed sockets will be polled at each poll
    			-- delay.
    			-- (from SOCKET_POLLER)

    	set_poll_one
    			-- Only one subscribed listening socket and one service
    			-- socket will be polled at each poll delay (if present).
    			-- (from SOCKET_POLLER)

    feature -- Creation

    	poller_make
    			-- Create internal structure of poller.
    			-- (from SOCKET_POLLER)

    	poller_make_active (a_poll_delay: INTEGER_32)
    			-- Create active poller with `a_poll_delay' time
    			-- quantum (in milliseconds).
    			-- (from SOCKET_POLLER)

    feature -- Execute

    	execute (arg: ANY)
    			-- Poll the socket.

    feature -- Initialisation

    	make (a_window: WEL_WINDOW; a_timer_id: INTEGER_32)
    			-- Create WEL_TIMER and socket_poller.
    		require
    			not_window_void: a_window /= Void
    		ensure
    			window: parent_window = a_window
    			id: timer_id = a_timer_id

    	make_active (a_window: WEL_WINDOW; a_timer_id: INTEGER_32; a_delay: INTEGER_32)
    			-- Enable timer and create active socket_poller.
    		require
    			not_window_void: a_window /= Void
    		ensure
    			window: parent_window = a_window
    			id: timer_id = a_timer_id
    			poller_active: is_poller_active

    feature -- Output

    	io: STD_FILES
    			-- Handle to standard file setup
    			-- (from ANY)

    	out: STRING_8
    			-- New string containing terse printable representation
    			-- of current object
    			-- Was declared in ANY as synonym of tagged_out.
    			-- (from ANY)

    	print (some: ANY)
    			-- Write terse external representation of `some'
    			-- on standard output.
    			-- (from ANY)

    	frozen tagged_out: STRING_8
    			-- New string containing terse printable representation
    			-- of current object
    			-- Was declared in ANY as synonym of out.
    			-- (from ANY)

    feature -- Platform

    	operating_environment: OPERATING_ENVIRONMENT
    			-- Objects available from the operating system
    			-- (from ANY)

    feature -- Subscription

    	add_accept_call_back (a_stream_socket: STREAM_SOCKET; a_command: POLL_COMMAND; an_argument: ANY)
    			-- Set command	`a_command' to be called when
    			-- `a_stream_socket' is connected.
    			-- (from SOCKET_POLLER)
    		require -- from SOCKET_POLLER
    			stream_socket_open_read: a_stream_socket.is_open_read
    			command_not_void: a_command /= Void

    	add_readable_call_back (a_socket: SOCKET; a_command: POLL_COMMAND; an_argument: ANY)
    			-- Set command	`a_command' to be called when
    			-- `a_socket' is readable.
    			-- (from SOCKET_POLLER)
    		require -- from SOCKET_POLLER
    			socket_open_read: a_socket.is_open_read
    			command_not_void: a_command /= Void

    	remove_accept_call_back (a_stream_socket: STREAM_SOCKET)
    			-- Remove socket `a_stream_socket' from call-back list.
    			-- (from SOCKET_POLLER)

    	remove_readable_call_back (a_socket: SOCKET)
    			-- Remove socket `a_socket' from call-back list.
    			-- (from SOCKET_POLLER)

    	wipe_out_all_call_backs
    			-- Remove all socket call_backs from poller.
    			-- (from SOCKET_POLLER)

    invariant
    		-- from ANY
    	reflexive_equality: standard_is_equal (Current)
    	reflexive_conformance: conforms_to (Current)

    indexing
    	copyright: "Copyright (c) 1984-2006, Eiffel Software and others"
    	license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
    	source: "[
    		Eiffel Software
    		356 Storke Road, Goleta, CA 93117 USA
    		Telephone 805-685-1006, Fax 805-685-6869
    		Website http://www.eiffel.com
    		Customer support http://support.eiffel.com
    	]"

    end -- class WEL_SOCKET_POLLER