func init // add using module sys.add_use('System.Net') // use external class sys.UseClass("TCP_Client") // defines the variable of an instance blk_vars.println('private ', ((sys.get_project() == "Console") ? 'static ' : ''), 'TCP_Client ', this.codename, ';') // make methods for the fields sys._prop_init('AutoReconnect', 1, 1, 104) sys._prop_init('DataEncoding', 1, 1, 0) sys._prop_init('ConnectionState', 1, 0, 0) sys._prop_init('ConnectTimeout', 1, 1, 1) sys._prop_init('ReconnectInterval', 1, 1, 1) sys._prop_init('ReceiveTimeout', 1, 1, 1) sys._prop_init('SendTimeout', 1, 1, 1) // initialize event handlers if(linked("onReceived")) sys.blocks_store() event("onReceived", 'data as byte[]') blk_proc_imp.inc().println('private void client_DataReceived(TCP_Client sender, object data) { // ', this.codename, ':onReceived').inc() .println('if (this.InvokeRequired) {').inc() .println('try {').inc() .println('this.Invoke(new TCP_Client.delDataReceived(client_DataReceived), sender, data);') .dec().println('} catch {} return;') .dec().println('}') if(not blk_lvars.empty()) blk_proc_imp.copyhere(blk_lvars) end blk_proc_imp.copyhere(blk) .dec().println('}').dec() sys.blocks_restore() end if(linked("onStatusChanged")) sys.blocks_store() event("onStatusChanged", 'status') blk_proc_imp.inc().println('private void client_ConnectionStatusChanged(TCP_Client sender, TCP_Client.ConnectionStatus status) { // ', this.codename, ':onStatusChanged').inc() .println('if (this.InvokeRequired) {').inc() .println('this.Invoke(new TCP_Client.delConnectionStatusChanged(client_ConnectionStatusChanged), sender, status);') .println('return;') .dec().println('}') if(not blk_lvars.empty()) blk_proc_imp.copyhere(blk_lvars) end blk_proc_imp.copyhere(blk) .dec().println('}').dec() sys.blocks_restore() end end func doConnect() // creates instance params = 'IPAddress.Parse(' + d("address") + '), ' + d("port") + ', ' + lower(this.props('AutoReconnect').value) blk.println(this.codename, ' = new TCP_Client(', params, ');') // sets event handlers if(linked("onReceived")) blk.println(this.codename, '.DataReceived += new TCP_Client.delDataReceived(client_DataReceived);') end if(linked("onStatusChanged")) blk.println(this.codename, '.ConnectionStatusChanged += new TCP_Client.delConnectionStatusChanged(client_ConnectionStatusChanged);') end // sets a properties sys.set_typed_field(104, 'AutoReconnect', '', '', blk) sys.set_typed_field(20, 'DataEncoding', '', '', blk) sys.set_typed_field(1, 'ConnectTimeout', '', '', blk) sys.set_typed_field(1, 'ReconnectInterval', '', '', blk) sys.set_typed_field(1, 'ReceiveTimeout', '', '', blk) sys.set_typed_field(1, 'SendTimeout', '', '', blk) // starts a connection blk.println(this.codename, '.Connect();') end func doDisconnect() blk.println('if (', this.codename, ' != null) ', this.codename, '.Disconnect();') end func doDispose() blk.println('if (', this.codename, ' != null) ', this.codename, '.Dispose();') end func doSend(data) blk.println('if (', this.codename, ' != null) ', this.codename, '.Send(', d("data"), ');') end