Welcome, guest | Sign In | My Account | Store | Cart
proc read_socket {sock} {
set pdu [read $sock]
if {[catch {binary scan $pdu ccc d(disver) d(exercise) d(kind)}]} {return}

switch -- $d(kind) {
 1	{
	# ENTITY STATE
	catch {binary scan $pdu ccccISSSSSccccSccccccSccccIIIWWWIIIIcA39cA11I \
	d(disver) d(exercise) d(kind) d(family) d(time) d(length) pad \
	d(site) d(host) d(ent) d(force) d(art) \
	d(kind) d(domain) d(country) d(cat) d(subcat) d(spec) d(extra) \
	d(altkind) d(altdomain) d(altcountry) d(altcat) d(altsubcat) d(altspec) d(altextra) \
	d(velx) d(vely) d(velz) d(locx) d(locy) d(locz) d(orientx) d(orienty) d(orientz) \
	d(appearance) d(dra) pad d(charset) d(marking) d(cap)} result

	}
 2	{
	# FIRE
	catch {binary scan $pdu ccccISSSSSSSSSSSSSSIWWWccSccccSSSSIIII \
	d(disver) d(exercise) d(kind) d(family) d(time) d(length) 0 \
	d(site) d(host) d(ent) d(sitetgt) d(hosttgt) d(enttgt) \
	d(sitemun) d(hostmun) d(entmun) d(siteevt) d(hostevt) d(entevt) \
	d(mission) d(locx) d(locy) d(locz) \
	d(kind) d(domain) d(country) d(cat) d(subcat) d(spec) d(extra) \
	d(warhead) d(fuze) d(quantity) d(rate) d(velx) d(vely) d(velz) d(range)} result

	}
 3	{
	# DETONATION
	catch {binary scan $pdu ccccISSSSSSSSSSSSSSIIIWWWccSccccSSSSIIIccS \
	d(disver) d(exercise) d(kind) d(family) d(time) d(length) 0 \
	d(site) d(host) d(ent) d(sitetgt) d(hosttgt) d(enttgt) \
	d(sitemun) d(hostmun) d(entmun) d(siteevt) d(hostevt) d(entevt) \
	d(velx) d(vely) d(velz) d(locx) d(locy) d(locz) \
	d(kind) d(domain) d(country) d(cat) d(subcat) d(spec) d(extra) \
	d(warhead) d(fuze) d(quantity) d(rate) d(entx) d(enty) d(entz) d(result) \
	d(parts) d(art)} result

	}
}

}

History