include('wintools') func init() if(pos("network", QT_MOD) == 0) QT_MOD += " network" end fvar(old) old = block.select(BLK_INC) println('#include ') block.select(BLK_BODY) lng.decl_priv_var(udpSock, 'QUdpSocket*') println(udpSock, ' = new QUdpSocket();') if(linked(onConnected)) createEvent(udpSock, 'connected', 'onConnected') end if(linked(onDisconnected)) createEvent(udpSock, 'disconnected', 'onDisconnected') end if(linked(onError)) createEventArg1(udpSock, 'error', 'onError', 'QAbstractSocket::SocketError', 'QAbstractSocket::SocketError socketError', 'socketError'@int) end if(linked(onHostFound)) createEvent(udpSock, 'hostFound', 'onHostFound') end if(linked(onReadReady)) if(isdef(AutoRead)) lng.decl_priv_var(dg, 'QByteArray') println('connect(' + udpSock + ', SIGNAL(readyRead()), this, SLOT(' + _onReadReady + '()));') lng.begin_func(_onReadReady + '()') println(dg + '.resize(' + udpSock + '->pendingDatagramSize());') lng.decl_loc_var(sender, 'QHostAddress') lng.decl_loc_var(senderPort, 'quint16') println(udpSock + '->readDatagram(' + dg + '.data(), ' + dg + '.size(), &' + sender + ', & ' + senderPort + ');') event(onReadReady, dg@QByteArray ^ sender + '.toString()'@str ^ senderPort@int) lng.end_func(BLK_SLOT) else createEvent(udpSock, 'readyRead', 'onReadReady') end end block.select(BLK_CLOSE) println(udpSock + '->close();') block.select(BLK_DESTR) println('delete ' + udpSock + ';') block.select(old) end func doBind(_data) fvar(h) if(isset(HostName)) h = 'QHostAddress(' && HostName && ')' else h = 'QHostAddress::LocalHost' end println(udpSock + '->bind(', h, ',', Port, ');') end func doClose(_data) println(udpSock + '->close();') end func doSend(_data) fvar(dt, data, host, port) dt = _data data = _arr.mt_pop(dt) host = _arr.mt_pop(dt) port = _arr.mt_pop(dt) println(udpSock + '->writeDatagram(', data, ',QHostAddress(', host, '),', port, ');') end func doRead(_data) // TODO end func IODevice() return(udpSock@QIODevice) end func Active() return(tcpSock + '->isOpen()') end