func (i *PrimarySelectionDeviceManager) GetDevice(seat *client.Seat) (*PrimarySelectionDevice, error) {
	id := NewPrimarySelectionDevice(i.Context())
	const opcode = 1
	const rLen = 8 + 4 + 4
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	client.PutUint32(r[l:l+4], id.ID())
	l += 4
	client.PutUint32(r[l:l+4], seat.ID())
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return id, err
}
GetDevice : create a new primary selection device

Create a new data device for a given seat.
package primary_selection
import (
	"reflect"
	"github.com/rajveermalviya/go-wayland/wayland/client"
	"golang.org/x/sys/unix"
)
type PrimarySelectionDeviceManager struct {
	client.BaseProxy
}
func NewPrimarySelectionDeviceManager(ctx *client.Context) *PrimarySelectionDeviceManager {
	zwpPrimarySelectionDeviceManagerV1 := &PrimarySelectionDeviceManager{}
	ctx.Register(zwpPrimarySelectionDeviceManagerV1)
	return zwpPrimarySelectionDeviceManagerV1
}
func (i *PrimarySelectionDeviceManager) CreateSource() (*PrimarySelectionSource, error) {
	id := NewPrimarySelectionSource(i.Context())
	const opcode = 0
	const rLen = 8 + 4
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	client.PutUint32(r[l:l+4], id.ID())
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return id, err
}