示例#1
0
文件: client.go 项目: koron/go-mqtt
func (c *client) send(p packet.Packet) error {
	b, err := p.Encode()
	if err != nil {
		return err
	}
	if c.pf == nil {
		// send without PacketFilter
		_, err = c.conn.Write(b)
		if err != nil {
			return err
		}
		return nil
	}
	// send with PacketFilter
	b2, err := c.pf.PreSend(p, b)
	if err != nil {
		return err
	}
	_, err = c.conn.Write(b2)
	if err != nil {
		return err
	}
	c.pf.PostSend(p, b2)
	return nil
}
示例#2
0
文件: client.go 项目: koron/go-mqtt
func (c *client) send(p packet.Packet) error {
	c.sl.Lock()
	defer c.sl.Unlock()
	if c.conn == nil {
		return errors.New("connection closed")
	}
	b, err := p.Encode()
	if err != nil {
		return err
	}
	err = c.sendRaw(b)
	if err != nil {
		return err
	}
	c.keepAliveExtend()
	return nil
}