Page History
Wiki Markup |
---|
{hiddendiv:style=display:none} DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY (EXCEPT INSIDE THE DIV BELOW WITH ID=DESCRIPTION), UNLESS YOU KNOW WHAT YOU'RE DOING. THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACTAUTO CHANGES FROMUPDATE THE PAGECONTENT ANDTHROUGH MERGETHE THEM BACK INTO SERVOY SOURCE{hiddenDOC GENERATOR{div} {sub-sectiondiv:id=description|text=}{sub-sectiondiv}\\ {table:id=|class=servoy sReturnTypes}{tr:style=height: 30px;}{th}Return Types{th}{tr}{tr}{td}{span:class=sWordList}[JSPacket]{span}{td}{tr}{table}\\ {table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}[JSPacket]{td}{td}[#createNewPacket]\() Create a new empty packet.{td}{tr}{tbody}{tbody}{tr}{td}[JSPacket]{td}{td}[#getReceivedPacket]\() Get a packet from receive buffer, read buffer until empty (null is returned).{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#sendPacket]\(destIpOrHostname, packet) Send a packet.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#sendPacket]\(destIpOrHostname, packet, port) Send a packet on another port.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#startSocket]\(port_number, method_to_call_when_packet_received_and_buffer_is_empty) Start a UDP socket for a port.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#stopSocket]\() Stop the UDP socket for a port.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#testPacket]\(packet) Put a test packet in the receive buffer to test your method call and getReceivedPacket.{td}{tr}{tbody}{table}\\ {table:id=function|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=createNewPacket|class=node}{tr:id=name}{td}h6.createNewPacket{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSPacket]{span}{span:id=iets|style=float: left; font-weight: bold;}createNewPacket{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{builder-show:permission=edit}{tr:id=desret}{td}{sub-section:createNewPacket_des|trigger=button|text=}{sub-section}{sub-section:createNewPacket_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc*Returns*\\{div:class=sIndent}[JSPacket]{div}{td}{tr}{tr:id=sam}{td}*SinceSample*\\{sub-section:createNewPacket_snc|trigger=button|text=}{sub-section}{sub-section:createNewPacket_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:createNewPacket_prs|trigger=button|text=}{sub-section}{sub-section:createNewPacket_prs|trigger=none|class=sIndent}{sub-section}div:class=sIndent}{code:language=javascript} var packet = plugins.udp.createNewPacket() packet.writeUTF('hello world!')//writes UTF packet.writeInt(12348293)//writes 4 bytes packet.writeShort(14823)//writes 2 bytes packet.writeByte(123)//writes 1 byte {code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getReceivedPacket}{tr:id=name}{td}h6.getReceivedPacket{td}{tr}{builder-show}{tr:id=retsig}{td}*Returns*\\{sub-section:createNewPacket_ret|trigger=button|text=}{sub-section}{sub-section:createNewPacket_ret|trigger=none|class=sIndent}[JSPacket]{sub-section{span:style=margin-right: 5px;}[JSPacket]{span}{span:style=font-weight: bold;}getReceivedPacket{span}{span}\(){span}{td}{tr}{builder-show:permission=edit}{tr:id=seeret}{td}*Also seeReturns*\\{sub-section:createNewPacket_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createNewPacket_see|trigger=none}{sub-section}{[JSPacket]{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=linksam}{td}*External linksSample*\\{sub-section:createNewPacket_link|trigger=button|text=}{sub-section}{divdiv:class=sIndent}{sub-section:createNewPacket_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:createNewPacket_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:createNewPacket_sam|trigger=none}{code:language=javascript} varcode:language=javascript} var packet = null while( ( packet = plugins.udp.createNewPacketgetReceivedPacket() ) packet.writeUTF('hello world!')//writes UTF packet.writeInt(12348293)//writes 4 bytes packet.writeShort(14823)//writes 2 bytes packet.writeByte(123)//writes 1 byte!= null) { var text = packet.readUTF() var count = packet.readInt() } {code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getReceivedPacket|class=nodesendPacket-String_JSPacket}{tr:id=name}{td}h6.getReceivedPacketsendPacket{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSPacketBoolean]{span}{span:id=iets|style=float: left; font-weight: bold;}getReceivedPacketsendPacket{span}{span:id=iets|style=float: left;}\(destIpOrHostname, packet){span}{td}{tr}{builder-show:permission=edit}{tr:id=desprs}{td}{sub-section:getReceivedPacket_des|trigger=button|text=}{sub-section}{sub-section:getReceivedPacket_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit*Parameters*\\{div:class=sIndent}\{[String]} destIpOrHostname -- the ip of the destination or the hostname \{[JSPacket]} packet -- the JSPacket to send {div}{td}{tr}{tr:id=sncret}{td}*SinceReturns*\\{sub-section:getReceivedPacket_snc|trigger=button|text=}{sub-section}{sub-section:getReceivedPacket_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getReceivedPacket_prs|trigger=button|text=}{sub-section}{sub-section:getReceivedPacket_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-showdiv:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript} var packet = plugins.udp.createNewPacket() packet.writeUTF('hello world!') plugins.udp.sendPacket('10.0.0.1',packet) {code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=sendPacket-String_JSPacket_Number}{tr:id=retname}{td}*Returns*\\{sub-section:getReceivedPacket_ret|trigger=button|text=}{sub-section}{sub-section:getReceivedPacket_ret|trigger=none|class=sIndent}[JSPacket]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getReceivedPacket_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getReceivedPacket_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getReceivedPacket_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:getReceivedPacket_link|trigger=none}{sub-section}h6.sendPacket{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}sendPacket{span}{span}\(destIpOrHostname, packet, port){span}{td}{tr}{tr:id=prs}{td}*Parameters*\\{div:class=sIndent}\{[String]} destIpOrHostname -- the ip of the destination or the hostname \{[JSPacket]} packet -- the JSPacket to send \{[Number]} port -- the port on which to send the packet {div}{td}{tr}{builder-show}{tr:id=samret}{td}*SampleReturns*\\{sub-section:getReceivedPacket_sam|trigger=button|text=}{sub-section}div:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{sub-section:getReceivedPacket_sam|trigger=none}{code:language=javascript} var packet = null while( ( packet = plugins.udp.getReceivedPacketcreateNewPacket() ) != null) { var text = packet.readUTF() var count = packet.readInt() } {code}{sub-sectionpacket.writeUTF('hello world!') plugins.udp.sendPacket('10.0.0.1',packet, 4321) {code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=sendPacketstartSocket-String_JSPacket|class=nodeNumber_Object}{tr:id=name}{td}h6.sendPacketstartSocket{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}sendPacketstartSocket{span}{span:id=iets|style=float: left;}\(destIpOrHostnameport_number, method_to_call_when_packet_received_and_buffer_is_empty){span}{td}{tr}{builder-showtr:permissionid=editprs}{tr:id=des}{td}{sub-section:sendPacket-String_JSPacket_des|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:sendPacket-String_JSPacket_snc|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:sendPacket-String_JSPacket_prs|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_prs|trigger=none|class=sIndent}\{[String]} destIpOrHostname -- the ip of the destination or the hostname \{[JSPacket]} packet -- the JSPacket to send {sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:sendPacket-String_JSPacket_ret|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:sendPacket-String_JSPacket_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:sendPacket-String_JSPacket_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:sendPacket-String_JSPacket_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:sendPacket-String_JSPacket_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:sendPacket-String_JSPacket_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:sendPacket-String_JSPacket_sam|trigger=none}{code:language=javascript} var packet = plugins.udp.createNewPacket() packet.writeUTF('hello world!') plugins.udp.sendPacket('10.0.0.1',packet) {code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=sendPacket-String_JSPacket_Number|class=node}{tr:id=name}{td}h6.sendPacket{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}sendPacket{span}{span:id=iets|style=float: left;}\(destIpOrHostname, packet, port){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:sendPacket-String_JSPacket_Number_des|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_Number_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:sendPacket-String_JSPacket_Number_snc|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:sendPacket-String_JSPacket_Number_prs|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_Number_prs|trigger=none|class=sIndent}\{[String]} destIpOrHostname -- the ip of the destination or the hostname \{[JSPacket]} packet -- the JSPacket to send \{[Number]} port -- the port on which to send the packet {sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:sendPacket-String_JSPacket_Number_ret|trigger=button|text=}{sub-section}{sub-section:sendPacket-String_JSPacket_Number_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:sendPacket-String_JSPacket_Number_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:sendPacket-String_JSPacket_Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:sendPacket-String_JSPacket_Number_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:sendPacket-String_JSPacket_Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:sendPacket-String_JSPacket_Number_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:sendPacket-String_JSPacket_Number_sam|trigger=none}{code:language=javascript} var packet = plugins.udp.createNewPacket() packet.writeUTF('hello world!') plugins.udp.sendPacket('10.0.0.1',packet, 4321) {code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=startSocket-Number_Object|class=node}{tr:id=name}{td}h6.startSocket{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}startSocket{span}{span:id=iets|style=float: left;}\(port_number, method_to_call_when_packet_received_and_buffer_is_empty){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:startSocket-Number_Object_des|trigger=button|text=}{sub-section}{sub-section:startSocket-Number_Object_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:startSocket-Number_Object_snc|trigger=button|text=}{sub-section}{sub-section:startSocket-Number_Object_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:startSocket-Number_Object_prs|trigger=button|text=}{sub-section}{sub-section:startSocket-Number_Object_prs|trigger=none|class=sIndent}\{[Number]} port_number -- the local port that this UDP socket will bind to. \{[Object]} method_to_call_when_packet_received_and_buffer_is_empty -- when the socket receives one or more packages, it calls this method once. The method will no longer be called even if new packages are received \- until a call to UDPProvider#js\_getReceivedPacket() returns null. So you should consume all available packets before you expect this method to be called again. {sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:startSocket-Number_Object_ret|trigger=button|text=}{sub-section}{sub-section:startSocket-Number_Object_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:startSocket-Number_Object_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:startSocket-Number_Object_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:startSocket-Number_Object_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:startSocket-Number_Object_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:startSocket-Number_Object_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:startSocket-Number_Object_sam|trigger=none}{code:language=javascript} plugins.udp.startSocket(1234,my_packet_process_method) {code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=stopSocket|class=node}{tr:id=name}{td}h6.stopSocket{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}stopSocket{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:stopSocket_des|trigger=button|text=}{sub-section}{sub-section:stopSocket_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:stopSocket_snc|trigger=button|text=}{sub-section}{sub-section:stopSocket_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:stopSocket_prs|trigger=button|text=}{sub-section}{sub-section:stopSocket_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:stopSocket_ret|trigger=button|text=}{sub-section}{sub-section:stopSocket_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:stopSocket_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:stopSocket_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:stopSocket_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:stopSocket_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:stopSocket_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:stopSocket_sam|trigger=none}{code:language=javascript} plugins.udp.stopSocket() {code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=testPacket-JSPacket|class=node}{tr:id=name}{td}h6.testPacket{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}testPacket{span}{span:id=iets|style=float: left;}\(packet){span}{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:testPacket-JSPacket_des|trigger=button|text=}{sub-section}{sub-section:testPacket-JSPacket_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:testPacket-JSPacket_snc|trigger=button|text=}{sub-section}{sub-section:testPacket-JSPacket_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:testPacket-JSPacket_prs|trigger=button|text=}{sub-section}{sub-section:testPacket-JSPacket_prs|trigger=none|class=sIndent}\{[JSPacket]} packet {sub-section*Parameters*\\{div:class=sIndent}\{[Number]} port_number -- the local port that this UDP socket will bind to. \{[Object]} method_to_call_when_packet_received_and_buffer_is_empty -- when the socket receives one or more packages, it calls this method once. The method will no longer be called even if new packages are received \- until a call to UDPProvider#js\_getReceivedPacket() returns null. So you should consume all available packets before you expect this method to be called again. {div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript} plugins.udp.startSocket(1234,my_packet_process_method) {code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=stopSocket}{tr:id=name}{td}h6.stopSocket{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}void{span}{span:style=font-weight: bold;}stopSocket{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}void{div}{td}{tr}{tr:id=retsam}{td}*ReturnsSample*\\{sub-section:testPacket-JSPacket_ret|trigger=button|text=}{sub-section}{sub-section:testPacket-JSPacket_ret|trigger=none|class=sIndent}[Boolean]{sub-sectiondiv:class=sIndent}{code:language=javascript} plugins.udp.stopSocket() {code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{builder-showtbody:permissionid=edittestPacket-JSPacket}{tr:id=seename}{td}*Also see*\\{sub-section:testPacket-JSPacket_see|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:testPacket-JSPacket_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edith6.testPacket{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Boolean]{span}{span:style=font-weight: bold;}testPacket{span}{span}\(packet){span}{td}{tr}{tr:id=linkprs}{td}*External linksParameters*\\{sub-section:testPacket-JSPacket_link|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:testPacket-JSPacket_link|trigger=none}{sub-section}div:class=sIndent}\{[JSPacket]} packet {div}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Boolean]{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:testPacket-JSPacket_sam|trigger=button|text=}{sub-section}{div:class=sIndent}{sub-section:testPacket-JSPacket_sam|trigger=none}{code:language=javascript} var packet = plugins.udp.createNewPacket() packet.writeUTF('hello world!') plugins.udp.testPacket(packet) {code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table} |
Overview
Content Tools
Activity