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