static int _write_uint32(lua_State *L){ lua_packet_t p = lua_getluapacket(L,1); if(!p->_packet || p->_packet->type != WPACKET) return luaL_error(L,"invaild opration"); if(lua_type(L,2) != LUA_TNUMBER) return luaL_error(L,"invaild arg2"); uint32_t v = (uint32_t)lua_tointeger(L,2); wpacket_t wpk = (wpacket_t)p->_packet; wpk_write_uint32(wpk,v); return 0; }
void wpk_write_wpk(wpacket_t w,wpacket_t value){ uint32_t hlen = kn_ntoh32(*value->len) + sizeof(*value->len); wpk_write_uint32(w,hlen); uint32_t pos = ((packet_t)value)->begin_pos; buffer_t buf = ((packet_t)value)->buf; uint32_t sizeremain = hlen; while(sizeremain){ uint32_t size = buf->size - pos; size = size > sizeremain ? sizeremain : size; wpk_write(w,&buf->buf[pos],size); sizeremain -= size; pos = 0; buf = buf->next; } }
//向gate发送短通告消息 void shortmsg2gate(uint16_t cmd,uint32_t gateident){ wpacket_t wpk = wpk_create(64,0); wpk_write_uint16(wpk,cmd); wpk_write_uint32(wpk,gateident); send2gate(wpk); }