destinypb

package
v0.0.0-...-3a733ff Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2022 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthDestiny        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowDestiny          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupDestiny = fmt.Errorf("proto: unexpected end of group")
)
View Source
var InstanceState_Status_name = map[int32]string{
	0: "None",
	1: "Prepared",
	2: "SignShared",
	3: "Committed",
	4: "StateShared",
	5: "Executed",
}
View Source
var InstanceState_Status_value = map[string]int32{
	"None":        0,
	"Prepared":    1,
	"SignShared":  2,
	"Committed":   3,
	"StateShared": 4,
	"Executed":    5,
}
View Source
var NormalMessage_Type_name = map[int32]string{
	0: "None",
	1: "Prepare",
	2: "SignShare",
	3: "Commit",
	4: "StateShare",
	5: "ExecProof",
}
View Source
var NormalMessage_Type_value = map[string]int32{
	"None":       0,
	"Prepare":    1,
	"SignShare":  2,
	"Commit":     3,
	"StateShare": 4,
	"ExecProof":  5,
}
View Source
var OInstanceState_Status_name = map[int32]string{
	0: "None",
	1: "Prepared",
	2: "SignShared",
	3: "Committed",
	4: "StateShared",
	5: "Executed",
}
View Source
var OInstanceState_Status_value = map[string]int32{
	"None":        0,
	"Prepared":    1,
	"SignShared":  2,
	"Committed":   3,
	"StateShared": 4,
	"Executed":    5,
}
View Source
var ONormalMessage_Type_name = map[int32]string{
	0: "None",
	1: "OPrepare",
	2: "OSignShare",
	3: "OCommit",
	4: "OStateShare",
	5: "OExecProof",
}
View Source
var ONormalMessage_Type_value = map[string]int32{
	"None":        0,
	"OPrepare":    1,
	"OSignShare":  2,
	"OCommit":     3,
	"OStateShare": 4,
	"OExecProof":  5,
}

Functions

func InstancesEquals

func InstancesEquals(a, b []InstanceID) bool

func ReplicaIDEquals

func ReplicaIDEquals(a, b []peerpb.PeerID) bool

func WrapMessageInner

func WrapMessageInner(msg proto.Message) isDestinyMessage_Type

WrapMessageInner wraps a union type of Message in a new isMessage_Type.

Types

type DestinyMessage

type DestinyMessage struct {
	// Types that are valid to be assigned to Type:
	//	*DestinyMessage_Normal
	//	*DestinyMessage_ONormal
	//	*DestinyMessage_Result
	Type isDestinyMessage_Type `protobuf_oneof:"type"`
}

func WrapDestinyMessage

func WrapDestinyMessage(msg proto.Message) *DestinyMessage

WrapDestinyMessage wraps a union type of Message in a new PBFTMessage without a destination.

func (*DestinyMessage) Descriptor

func (*DestinyMessage) Descriptor() ([]byte, []int)

func (*DestinyMessage) GetNormal

func (m *DestinyMessage) GetNormal() *NormalMessage

func (*DestinyMessage) GetONormal

func (m *DestinyMessage) GetONormal() *ONormalMessage

func (*DestinyMessage) GetResult

func (m *DestinyMessage) GetResult() *ResultMessage

func (*DestinyMessage) GetType

func (m *DestinyMessage) GetType() isDestinyMessage_Type

func (*DestinyMessage) Marshal

func (m *DestinyMessage) Marshal() (dAtA []byte, err error)

func (*DestinyMessage) MarshalTo

func (m *DestinyMessage) MarshalTo(dAtA []byte) (int, error)

func (*DestinyMessage) MarshalToSizedBuffer

func (m *DestinyMessage) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*DestinyMessage) ProtoMessage

func (*DestinyMessage) ProtoMessage()

func (*DestinyMessage) Reset

func (m *DestinyMessage) Reset()

func (*DestinyMessage) Size

func (m *DestinyMessage) Size() (n int)

func (*DestinyMessage) String

func (m *DestinyMessage) String() string

func (*DestinyMessage) Unmarshal

func (m *DestinyMessage) Unmarshal(dAtA []byte) error

func (*DestinyMessage) XXX_DiscardUnknown

func (m *DestinyMessage) XXX_DiscardUnknown()

func (*DestinyMessage) XXX_Marshal

func (m *DestinyMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*DestinyMessage) XXX_Merge

func (m *DestinyMessage) XXX_Merge(src proto.Message)

func (*DestinyMessage) XXX_OneofWrappers

func (*DestinyMessage) XXX_OneofWrappers() []interface{}

XXX_OneofWrappers is for the internal use of the proto package.

func (*DestinyMessage) XXX_Size

func (m *DestinyMessage) XXX_Size() int

func (*DestinyMessage) XXX_Unmarshal

func (m *DestinyMessage) XXX_Unmarshal(b []byte) error

type DestinyMessage_Normal

type DestinyMessage_Normal struct {
	Normal *NormalMessage `protobuf:"bytes,1,opt,name=normal,proto3,oneof" json:"normal,omitempty"`
}

func (*DestinyMessage_Normal) MarshalTo

func (m *DestinyMessage_Normal) MarshalTo(dAtA []byte) (int, error)

func (*DestinyMessage_Normal) MarshalToSizedBuffer

func (m *DestinyMessage_Normal) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*DestinyMessage_Normal) Size

func (m *DestinyMessage_Normal) Size() (n int)

type DestinyMessage_ONormal

type DestinyMessage_ONormal struct {
	ONormal *ONormalMessage `protobuf:"bytes,2,opt,name=oNormal,proto3,oneof" json:"oNormal,omitempty"`
}

func (*DestinyMessage_ONormal) MarshalTo

func (m *DestinyMessage_ONormal) MarshalTo(dAtA []byte) (int, error)

func (*DestinyMessage_ONormal) MarshalToSizedBuffer

func (m *DestinyMessage_ONormal) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*DestinyMessage_ONormal) Size

func (m *DestinyMessage_ONormal) Size() (n int)

type DestinyMessage_Result

type DestinyMessage_Result struct {
	Result *ResultMessage `protobuf:"bytes,3,opt,name=result,proto3,oneof" json:"result,omitempty"`
}

func (*DestinyMessage_Result) MarshalTo

func (m *DestinyMessage_Result) MarshalTo(dAtA []byte) (int, error)

func (*DestinyMessage_Result) MarshalToSizedBuffer

func (m *DestinyMessage_Result) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*DestinyMessage_Result) Size

func (m *DestinyMessage_Result) Size() (n int)

type Index

type Index uint64

func (*Index) GetAndIncrement

func (idx *Index) GetAndIncrement() Index

type InstanceID

type InstanceID struct {
	ReplicaID github_com_ibalajiarun_go_consensus_peer_peerpb.PeerID `` /* 153-byte string literal not displayed */
	Index     Index                                                  `protobuf:"varint,2,opt,name=index,proto3,casttype=Index" json:"index,omitempty"`
}

func (*InstanceID) Descriptor

func (*InstanceID) Descriptor() ([]byte, []int)

func (InstanceID) Equals

func (m InstanceID) Equals(other InstanceID) bool

func (*InstanceID) GetIndex

func (m *InstanceID) GetIndex() Index

func (*InstanceID) Marshal

func (m *InstanceID) Marshal() (dAtA []byte, err error)

func (*InstanceID) MarshalTo

func (m *InstanceID) MarshalTo(dAtA []byte) (int, error)

func (*InstanceID) MarshalToSizedBuffer

func (m *InstanceID) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*InstanceID) ProtoMessage

func (*InstanceID) ProtoMessage()

func (*InstanceID) Reset

func (m *InstanceID) Reset()

func (*InstanceID) Size

func (m *InstanceID) Size() (n int)

func (*InstanceID) String

func (m *InstanceID) String() string

func (*InstanceID) Unmarshal

func (m *InstanceID) Unmarshal(dAtA []byte) error

func (*InstanceID) XXX_DiscardUnknown

func (m *InstanceID) XXX_DiscardUnknown()

func (*InstanceID) XXX_Marshal

func (m *InstanceID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*InstanceID) XXX_Merge

func (m *InstanceID) XXX_Merge(src proto.Message)

func (*InstanceID) XXX_Size

func (m *InstanceID) XXX_Size() int

func (*InstanceID) XXX_Unmarshal

func (m *InstanceID) XXX_Unmarshal(b []byte) error

type InstanceState

type InstanceState struct {
	View        View                 `protobuf:"varint,1,opt,name=view,proto3,casttype=View" json:"view,omitempty"`
	InstanceID  InstanceID           `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id"`
	Status      InstanceState_Status `protobuf:"varint,3,opt,name=status,proto3,enum=destinypb.InstanceState_Status" json:"status,omitempty"`
	Command     *commandpb.Command   `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"`
	CommandHash []byte               `protobuf:"bytes,5,opt,name=command_hash,json=commandHash,proto3" json:"command_hash,omitempty"`
}

func (*InstanceState) Descriptor

func (*InstanceState) Descriptor() ([]byte, []int)

func (*InstanceState) GetCommand

func (m *InstanceState) GetCommand() *commandpb.Command

func (*InstanceState) GetCommandHash

func (m *InstanceState) GetCommandHash() []byte

func (*InstanceState) GetInstanceID

func (m *InstanceState) GetInstanceID() InstanceID

func (*InstanceState) GetStatus

func (m *InstanceState) GetStatus() InstanceState_Status

func (*InstanceState) GetView

func (m *InstanceState) GetView() View

func (*InstanceState) IsCommitted

func (m *InstanceState) IsCommitted() bool

func (*InstanceState) IsPrepared

func (m *InstanceState) IsPrepared() bool

func (*InstanceState) Marshal

func (m *InstanceState) Marshal() (dAtA []byte, err error)

func (*InstanceState) MarshalTo

func (m *InstanceState) MarshalTo(dAtA []byte) (int, error)

func (*InstanceState) MarshalToSizedBuffer

func (m *InstanceState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*InstanceState) ProtoMessage

func (*InstanceState) ProtoMessage()

func (*InstanceState) Reset

func (m *InstanceState) Reset()

func (*InstanceState) Size

func (m *InstanceState) Size() (n int)

func (*InstanceState) String

func (m *InstanceState) String() string

func (*InstanceState) Unmarshal

func (m *InstanceState) Unmarshal(dAtA []byte) error

func (*InstanceState) XXX_DiscardUnknown

func (m *InstanceState) XXX_DiscardUnknown()

func (*InstanceState) XXX_Marshal

func (m *InstanceState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*InstanceState) XXX_Merge

func (m *InstanceState) XXX_Merge(src proto.Message)

func (*InstanceState) XXX_Size

func (m *InstanceState) XXX_Size() int

func (*InstanceState) XXX_Unmarshal

func (m *InstanceState) XXX_Unmarshal(b []byte) error

type InstanceState_Status

type InstanceState_Status int32
const (
	InstanceState_None        InstanceState_Status = 0
	InstanceState_Prepared    InstanceState_Status = 1
	InstanceState_SignShared  InstanceState_Status = 2
	InstanceState_Committed   InstanceState_Status = 3
	InstanceState_StateShared InstanceState_Status = 4
	InstanceState_Executed    InstanceState_Status = 5
)

func (InstanceState_Status) EnumDescriptor

func (InstanceState_Status) EnumDescriptor() ([]byte, []int)

func (InstanceState_Status) String

func (x InstanceState_Status) String() string

type NormalMessage

type NormalMessage struct {
	View        View               `protobuf:"varint,1,opt,name=view,proto3,casttype=View" json:"view,omitempty"`
	InstanceID  InstanceID         `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id"`
	Type        NormalMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=destinypb.NormalMessage_Type" json:"type,omitempty"`
	Command     *commandpb.Command `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"`
	CommandHash []byte             `protobuf:"bytes,5,opt,name=command_hash,json=commandHash,proto3" json:"command_hash,omitempty"`
}

func (*NormalMessage) Descriptor

func (*NormalMessage) Descriptor() ([]byte, []int)

func (*NormalMessage) Equals

func (m *NormalMessage) Equals(other *NormalMessage) bool

func (*NormalMessage) GetCommand

func (m *NormalMessage) GetCommand() *commandpb.Command

func (*NormalMessage) GetCommandHash

func (m *NormalMessage) GetCommandHash() []byte

func (*NormalMessage) GetInstanceID

func (m *NormalMessage) GetInstanceID() InstanceID

func (*NormalMessage) GetType

func (m *NormalMessage) GetType() NormalMessage_Type

func (*NormalMessage) GetView

func (m *NormalMessage) GetView() View

func (*NormalMessage) Marshal

func (m *NormalMessage) Marshal() (dAtA []byte, err error)

func (*NormalMessage) MarshalTo

func (m *NormalMessage) MarshalTo(dAtA []byte) (int, error)

func (*NormalMessage) MarshalToSizedBuffer

func (m *NormalMessage) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*NormalMessage) ProtoMessage

func (*NormalMessage) ProtoMessage()

func (*NormalMessage) Reset

func (m *NormalMessage) Reset()

func (*NormalMessage) Size

func (m *NormalMessage) Size() (n int)

func (*NormalMessage) String

func (m *NormalMessage) String() string

func (*NormalMessage) Unmarshal

func (m *NormalMessage) Unmarshal(dAtA []byte) error

func (*NormalMessage) XXX_DiscardUnknown

func (m *NormalMessage) XXX_DiscardUnknown()

func (*NormalMessage) XXX_Marshal

func (m *NormalMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*NormalMessage) XXX_Merge

func (m *NormalMessage) XXX_Merge(src proto.Message)

func (*NormalMessage) XXX_Size

func (m *NormalMessage) XXX_Size() int

func (*NormalMessage) XXX_Unmarshal

func (m *NormalMessage) XXX_Unmarshal(b []byte) error

type NormalMessage_Type

type NormalMessage_Type int32
const (
	NormalMessage_None       NormalMessage_Type = 0
	NormalMessage_Prepare    NormalMessage_Type = 1
	NormalMessage_SignShare  NormalMessage_Type = 2
	NormalMessage_Commit     NormalMessage_Type = 3
	NormalMessage_StateShare NormalMessage_Type = 4
	NormalMessage_ExecProof  NormalMessage_Type = 5
)

func (NormalMessage_Type) EnumDescriptor

func (NormalMessage_Type) EnumDescriptor() ([]byte, []int)

func (NormalMessage_Type) String

func (x NormalMessage_Type) String() string

type OInstanceState

type OInstanceState struct {
	View        View                  `protobuf:"varint,1,opt,name=view,proto3,casttype=View" json:"view,omitempty"`
	Index       Index                 `protobuf:"varint,2,opt,name=index,proto3,casttype=Index" json:"index,omitempty"`
	Status      OInstanceState_Status `protobuf:"varint,3,opt,name=status,proto3,enum=destinypb.OInstanceState_Status" json:"status,omitempty"`
	Instances   []InstanceID          `protobuf:"bytes,4,rep,name=instances,proto3" json:"instances"`
	CommandHash []byte                `protobuf:"bytes,5,opt,name=command_hash,json=commandHash,proto3" json:"command_hash,omitempty"`
}

func (*OInstanceState) Descriptor

func (*OInstanceState) Descriptor() ([]byte, []int)

func (*OInstanceState) GetCommandHash

func (m *OInstanceState) GetCommandHash() []byte

func (*OInstanceState) GetIndex

func (m *OInstanceState) GetIndex() Index

func (*OInstanceState) GetInstances

func (m *OInstanceState) GetInstances() []InstanceID

func (*OInstanceState) GetStatus

func (m *OInstanceState) GetStatus() OInstanceState_Status

func (*OInstanceState) GetView

func (m *OInstanceState) GetView() View

func (*OInstanceState) IsCommitted

func (m *OInstanceState) IsCommitted() bool

func (*OInstanceState) Marshal

func (m *OInstanceState) Marshal() (dAtA []byte, err error)

func (*OInstanceState) MarshalTo

func (m *OInstanceState) MarshalTo(dAtA []byte) (int, error)

func (*OInstanceState) MarshalToSizedBuffer

func (m *OInstanceState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*OInstanceState) ProtoMessage

func (*OInstanceState) ProtoMessage()

func (*OInstanceState) Reset

func (m *OInstanceState) Reset()

func (*OInstanceState) Size

func (m *OInstanceState) Size() (n int)

func (*OInstanceState) String

func (m *OInstanceState) String() string

func (*OInstanceState) Unmarshal

func (m *OInstanceState) Unmarshal(dAtA []byte) error

func (*OInstanceState) XXX_DiscardUnknown

func (m *OInstanceState) XXX_DiscardUnknown()

func (*OInstanceState) XXX_Marshal

func (m *OInstanceState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*OInstanceState) XXX_Merge

func (m *OInstanceState) XXX_Merge(src proto.Message)

func (*OInstanceState) XXX_Size

func (m *OInstanceState) XXX_Size() int

func (*OInstanceState) XXX_Unmarshal

func (m *OInstanceState) XXX_Unmarshal(b []byte) error

type OInstanceState_Status

type OInstanceState_Status int32
const (
	OInstanceState_None        OInstanceState_Status = 0
	OInstanceState_Prepared    OInstanceState_Status = 1
	OInstanceState_SignShared  OInstanceState_Status = 2
	OInstanceState_Committed   OInstanceState_Status = 3
	OInstanceState_StateShared OInstanceState_Status = 4
	OInstanceState_Executed    OInstanceState_Status = 5
)

func (OInstanceState_Status) EnumDescriptor

func (OInstanceState_Status) EnumDescriptor() ([]byte, []int)

func (OInstanceState_Status) String

func (x OInstanceState_Status) String() string

type ONormalMessage

type ONormalMessage struct {
	View        View                `protobuf:"varint,1,opt,name=view,proto3,casttype=View" json:"view,omitempty"`
	Index       Index               `protobuf:"varint,2,opt,name=index,proto3,casttype=Index" json:"index,omitempty"`
	Type        ONormalMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=destinypb.ONormalMessage_Type" json:"type,omitempty"`
	Instances   []InstanceID        `protobuf:"bytes,4,rep,name=instances,proto3" json:"instances"`
	CommandHash []byte              `protobuf:"bytes,5,opt,name=command_hash,json=commandHash,proto3" json:"command_hash,omitempty"`
}

func (*ONormalMessage) Descriptor

func (*ONormalMessage) Descriptor() ([]byte, []int)

func (*ONormalMessage) Equals

func (m *ONormalMessage) Equals(other *ONormalMessage) bool

func (*ONormalMessage) GetCommandHash

func (m *ONormalMessage) GetCommandHash() []byte

func (*ONormalMessage) GetIndex

func (m *ONormalMessage) GetIndex() Index

func (*ONormalMessage) GetInstances

func (m *ONormalMessage) GetInstances() []InstanceID

func (*ONormalMessage) GetType

func (m *ONormalMessage) GetType() ONormalMessage_Type

func (*ONormalMessage) GetView

func (m *ONormalMessage) GetView() View

func (*ONormalMessage) Marshal

func (m *ONormalMessage) Marshal() (dAtA []byte, err error)

func (*ONormalMessage) MarshalTo

func (m *ONormalMessage) MarshalTo(dAtA []byte) (int, error)

func (*ONormalMessage) MarshalToSizedBuffer

func (m *ONormalMessage) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ONormalMessage) ProtoMessage

func (*ONormalMessage) ProtoMessage()

func (*ONormalMessage) Reset

func (m *ONormalMessage) Reset()

func (*ONormalMessage) Size

func (m *ONormalMessage) Size() (n int)

func (*ONormalMessage) String

func (m *ONormalMessage) String() string

func (*ONormalMessage) Unmarshal

func (m *ONormalMessage) Unmarshal(dAtA []byte) error

func (*ONormalMessage) XXX_DiscardUnknown

func (m *ONormalMessage) XXX_DiscardUnknown()

func (*ONormalMessage) XXX_Marshal

func (m *ONormalMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ONormalMessage) XXX_Merge

func (m *ONormalMessage) XXX_Merge(src proto.Message)

func (*ONormalMessage) XXX_Size

func (m *ONormalMessage) XXX_Size() int

func (*ONormalMessage) XXX_Unmarshal

func (m *ONormalMessage) XXX_Unmarshal(b []byte) error

type ONormalMessage_Type

type ONormalMessage_Type int32
const (
	ONormalMessage_None        ONormalMessage_Type = 0
	ONormalMessage_OPrepare    ONormalMessage_Type = 1
	ONormalMessage_OSignShare  ONormalMessage_Type = 2
	ONormalMessage_OCommit     ONormalMessage_Type = 3
	ONormalMessage_OStateShare ONormalMessage_Type = 4
	ONormalMessage_OExecProof  ONormalMessage_Type = 5
)

func (ONormalMessage_Type) EnumDescriptor

func (ONormalMessage_Type) EnumDescriptor() ([]byte, []int)

func (ONormalMessage_Type) String

func (x ONormalMessage_Type) String() string

type ResultMessage

type ResultMessage struct {
	Result []byte `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Id     uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`
}

func (*ResultMessage) Descriptor

func (*ResultMessage) Descriptor() ([]byte, []int)

func (*ResultMessage) Equals

func (m *ResultMessage) Equals(other *ResultMessage) bool

func (*ResultMessage) GetId

func (m *ResultMessage) GetId() uint64

func (*ResultMessage) GetResult

func (m *ResultMessage) GetResult() []byte

func (*ResultMessage) Marshal

func (m *ResultMessage) Marshal() (dAtA []byte, err error)

func (*ResultMessage) MarshalTo

func (m *ResultMessage) MarshalTo(dAtA []byte) (int, error)

func (*ResultMessage) MarshalToSizedBuffer

func (m *ResultMessage) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ResultMessage) ProtoMessage

func (*ResultMessage) ProtoMessage()

func (*ResultMessage) Reset

func (m *ResultMessage) Reset()

func (*ResultMessage) Size

func (m *ResultMessage) Size() (n int)

func (*ResultMessage) String

func (m *ResultMessage) String() string

func (*ResultMessage) Unmarshal

func (m *ResultMessage) Unmarshal(dAtA []byte) error

func (*ResultMessage) XXX_DiscardUnknown

func (m *ResultMessage) XXX_DiscardUnknown()

func (*ResultMessage) XXX_Marshal

func (m *ResultMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ResultMessage) XXX_Merge

func (m *ResultMessage) XXX_Merge(src proto.Message)

func (*ResultMessage) XXX_Size

func (m *ResultMessage) XXX_Size() int

func (*ResultMessage) XXX_Unmarshal

func (m *ResultMessage) XXX_Unmarshal(b []byte) error

type View

type View uint64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL