Documentation ¶
Index ¶
- Constants
- Variables
- func BitsToBytes(count int) int
- func DataSize(data interface{}) int
- func DivCeil64(a uint64, b uint64) uint64
- func DivCeilInt(a int, b int) int
- func InBlockOffset(begin uint64) int
- func Min(a int, b int) int
- func NumPiecesAndBlocks(offset uint64) (int, int)
- func TagId2String(id byte) string
- func TagType2String(id byte) string
- type AddTransferParameters
- type BitField
- func (bf *BitField) Assign(b []byte, c int)
- func (bf BitField) Bits() int
- func (bf *BitField) ClearAll()
- func (bf *BitField) ClearBit(index int)
- func (bf *BitField) ClearTrailingBits()
- func (bf BitField) Count() int
- func (bf *BitField) Get(sb *StateBuffer) *StateBuffer
- func (bf BitField) GetBit(index int) bool
- func (bf BitField) Put(sb *StateBuffer) *StateBuffer
- func (bf *BitField) Resize(bits int)
- func (bf *BitField) ResizeVal(bits int, val bool)
- func (bf *BitField) SetAll()
- func (bf *BitField) SetBit(index int)
- func (bf BitField) Size() int
- type ByteContainer
- type Collection
- type CompressedPart
- type ED2KHash
- type Endpoint
- type ExtHello
- type FileAnswer
- type FileStatusAnswer
- type FoundFileSources
- type GetFileSources
- type GetServerList
- type HashSet
- type Hello
- type HelloAnswer
- type IP
- type IdChange
- type LoginRequest
- type MiscOptions
- type MiscOptions2
- func (mo *MiscOptions2) SetCaptcha()
- func (mo *MiscOptions2) SetExtMultipacket()
- func (mo *MiscOptions2) SetLargeFiles()
- func (mo *MiscOptions2) SetSourceExt2()
- func (mo MiscOptions2) SupportCaptcha() bool
- func (mo MiscOptions2) SupportExtMultipacket() bool
- func (mo MiscOptions2) SupportLargeFiles() bool
- func (mo MiscOptions2) SupportSourceExt2() bool
- type NumericEntry
- type OperatorEntry
- type PacketCombiner
- type PacketHeader
- func (ph *PacketHeader) Get(sb *StateBuffer) *StateBuffer
- func (ph PacketHeader) IsEmpty() bool
- func (ph PacketHeader) Put(sb *StateBuffer) *StateBuffer
- func (ph *PacketHeader) Read(buffer []byte)
- func (ph *PacketHeader) Reset()
- func (ph PacketHeader) Size() int
- func (ph PacketHeader) Write(buffer []byte)
- type ParenEntry
- type PieceBlock
- type RequestParts32
- type RequestParts64
- type SearchItem
- type SearchMore
- type SearchRequest
- type SearchResult
- type SendingPart
- type Serializable
- type SerializableNumber
- type Some
- type StateBuffer
- func (sw StateBuffer) Error() error
- func (sw StateBuffer) Offset() int
- func (sb *StateBuffer) Read(data interface{}) *StateBuffer
- func (sb *StateBuffer) ReadUint16() uint16
- func (sb *StateBuffer) ReadUint32() uint32
- func (sb *StateBuffer) ReadUint64() uint64
- func (sb *StateBuffer) ReadUint8() uint8
- func (sb StateBuffer) Remain() int
- func (sb *StateBuffer) Write(data interface{}) *StateBuffer
- type Status
- type StringEntry
- type Tag
- func (t Tag) AsBlob() []byte
- func (t Tag) AsBool() bool
- func (t Tag) AsByte() byte
- func (t Tag) AsFloat() float32
- func (t Tag) AsHash() []byte
- func (t Tag) AsInt() int
- func (t Tag) AsString() string
- func (t Tag) AsUint16() uint16
- func (t Tag) AsUint32() uint32
- func (t Tag) AsUint64() uint64
- func (t *Tag) Get(sr *StateBuffer) *StateBuffer
- func (t Tag) GetName() string
- func (t Tag) IsBlob() bool
- func (t Tag) IsBool() bool
- func (t Tag) IsByte() bool
- func (t Tag) IsFloat() bool
- func (t Tag) IsHash() bool
- func (t Tag) IsString() bool
- func (t Tag) IsUint16() bool
- func (t Tag) IsUint32() bool
- func (t Tag) IsUint64() bool
- func (t Tag) Put(sw *StateBuffer) *StateBuffer
- func (t Tag) Size() int
- type TagCollection
- type UsualPacket
Constants ¶
const BLOCKS_PER_PIECE int = PIECE_SIZE / BLOCK_SIZE // 50
const BLOCK_SIZE int = 190 * 1024 // 190kb = PIECE_SIZE/50
const BLOCK_SIZE_UINT64 uint64 = 190 * 1024 // 190kb = PIECE_SIZE/50
const CAPABLE_AUXPORT = SRVCAP_AUXPORT
const CAPABLE_IP_IN_LOGIN_FRAME = SRVCAP_IP_IN_LOGIN
const CAPABLE_LARGEFILES = SRVCAP_LARGEFILES
const CAPABLE_NEWTAGS = SRVCAP_NEWTAGS
const CAPABLE_UNICODE = SRVCAP_UNICODE
const CAPABLE_ZLIB = SRVCAP_ZLIB
const CAPTHA_OFFSET int = 11
const CT_EMULECOMPAT_OPTIONS byte = 0xEF
const CT_EMULE_BUDDYIP byte = 0xFC
const CT_EMULE_BUDDYUDP byte = 0xFD
const CT_EMULE_MISCOPTIONS1 byte = 0xFA
const CT_EMULE_MISCOPTIONS2 byte = 0xFE
const CT_EMULE_RESERVED1 byte = 0xF0
const CT_EMULE_RESERVED13 byte = 0xFF
const CT_EMULE_RESERVED2 byte = 0xF1
const CT_EMULE_RESERVED3 byte = 0xF2
const CT_EMULE_RESERVED4 byte = 0xF3
const CT_EMULE_RESERVED5 byte = 0xF4
const CT_EMULE_RESERVED6 byte = 0xF5
const CT_EMULE_RESERVED7 byte = 0xF6
const CT_EMULE_RESERVED8 byte = 0xF7
const CT_EMULE_RESERVED9 byte = 0xF8
const CT_EMULE_UDPPORTS byte = 0xF9
const CT_EMULE_VERSION byte = 0xFB
const CT_MOD_VERSION byte = 0x55
const CT_NAME byte = 0x01
const CT_PORT byte = 0x0F
const CT_SERVER_FLAGS byte = 0x20 // currently only used to inform a server about supported features
const CT_SERVER_UDPSEARCH_FLAGS byte = 0x0E
const CT_VERSION byte = 0x11
const ED2KFTSTR_ARCHIVE string = "Arc" // *Mule internal use only
const ED2KFTSTR_AUDIO string = "Audio"
Media values for FT_FILETYPE
const ED2KFTSTR_CDIMAGE string = "Iso" // *Mule internal use only
const ED2KFTSTR_DOCUMENT string = "Doc"
const ED2KFTSTR_EMULECOLLECTION string = "EmuleCollection"
const ED2KFTSTR_FOLDER string = "Folder" // Value for eD2K tag FT_FILETYPE
const ED2KFTSTR_IMAGE string = "Image"
const ED2KFTSTR_PROGRAM string = "Pro"
const ED2KFTSTR_USER string = "User" // eMule internal use only
const ED2KFTSTR_VIDEO string = "Video"
const ED2KFT_ANY byte = 0
const ED2KFT_ARCHIVE byte = 6 // ED2K protocol value (eserver 17.6+)
const ED2KFT_AUDIO byte = 1 // ED2K protocol value (eserver 17.6+)
const ED2KFT_CDIMAGE byte = 7 // ED2K protocol value (eserver 17.6+)
const ED2KFT_DOCUMENT byte = 5 // ED2K protocol value (eserver 17.6+)
const ED2KFT_EMULECOLLECTION byte = 8
const ED2KFT_IMAGE byte = 3 // ED2K protocol value (eserver 17.6+)
const ED2KFT_PROGRAM byte = 4 // ED2K protocol value (eserver 17.6+)
const ED2KFT_VIDEO byte = 2 // ED2K protocol value (eserver 17.6+)
const ED2K_MAX_PACKET_SIZE int = 125000
const ED2K_SEARCH_OP_EQUAL byte = 0
const ED2K_SEARCH_OP_GREATER byte = 1
const ED2K_SEARCH_OP_GREATER_EQUAL byte = 3
const ED2K_SEARCH_OP_LESS byte = 2
const ED2K_SEARCH_OP_LESS_EQUAL byte = 4
const ED2K_SEARCH_OP_NOTEQUAL byte = 5
const ET_COMMENTS byte = 0x24
const ET_COMPATIBLECLIENT byte = 0x26
const ET_COMPRESSION byte = 0x20
const ET_EXTENDEDREQUEST byte = 0x25
const ET_FEATURES byte = 0x27
const ET_MOD_VERSION byte = CT_MOD_VERSION
const ET_SOURCEEXCHANGE byte = 0x23
const ET_UDPPORT byte = 0x21
const ET_UDPVER byte = 0x22
const FT_AICH_HASH byte = 0x27
const FT_ATACCEPTED byte = 0x52 // <uint32>
const FT_ATREQUESTED byte = 0x51 // <uint32>
const FT_ATTRANSFERRED byte = 0x50 // <uint32>
const FT_ATTRANSFERREDHI byte = 0x54 // <uint32>
const FT_CATEGORY byte = 0x53 // <uint32>
const FT_COMPLETE_SOURCES byte = 0x30 // nr. of sources which share a
const FT_CORRUPTEDPARTS byte = 0x24 // <string>
const FT_DLPRIORITY byte = 0x18 // Was 13
const FT_DL_ACTIVE_TIME byte = 0x23 // <uint32>
const FT_DL_PREVIEW byte = 0x25
const FT_ED2K_MEDIA_ALBUM string = "Album" // <string>
const FT_ED2K_MEDIA_ARTIST string = "Artist" // <string>
Additional media meta data tags from eDonkeyHybrid (note also the uppercase/lowercase)
const FT_ED2K_MEDIA_BITRATE string = "bitrate" // <uint32>
const FT_ED2K_MEDIA_CODEC string = "codec" // <string>
const FT_ED2K_MEDIA_LENGTH string = "length" // <string> !!!
const FT_ED2K_MEDIA_TITLE string = "Title" // <string>
const FT_FAST_RESUME_DATA byte = 0x31 // fast resume data array
const FT_FILEFORMAT byte = 0x04 // <string>
const FT_FILEHASH byte = 0x28
const FT_FILENAME byte = 0x01 // <string>
const FT_FILERATING byte = 0xF7 // <uint8>
const FT_FILESIZE byte = 0x02 // <uint32>
const FT_FILESIZE_HI byte = 0x3A // <uint32>
const FT_FILETYPE byte = 0x03 // <string> or <uint32>
const FT_FLAGS byte = 0x22 // <uint32>
const FT_GAPEND byte = 0x0A // <uint32>
const FT_GAPSTART byte = 0x09 // <uint32>
const FT_KADLASTPUBLISHKEY byte = 0x20 // <uint32>
const FT_KADLASTPUBLISHNOTES byte = 0x26 // <uint32>
const FT_KADLASTPUBLISHSRC byte = 0x21 // <uint32>
const FT_LASTSEENCOMPLETE byte = 0x05 // <uint32>
const FT_MEDIA_ALBUM byte = 0xD1 // <string>
const FT_MEDIA_ARTIST byte = 0xD0 // <string>
const FT_MEDIA_BITRATE byte = 0xD4 // <uint32>
const FT_MEDIA_CODEC byte = 0xD5 // <string>
const FT_MEDIA_LENGTH byte = 0xD3 // <uint32> !!!
const FT_MEDIA_TITLE byte = 0xD2 // <string>
const FT_OLDDLPRIORITY byte = 0x13 // Not used anymore
const FT_OLDULPRIORITY byte = 0x17 // Not used anymore
const FT_PARTFILENAME byte = 0x12 // <string>
const FT_PERMISSIONS byte = 0x16 // <uint32>
const FT_PUBLISHINFO byte = 0x33 // <uint32>
const FT_SOURCES byte = 0x15 // <uint32>
const FT_STATUS byte = 0x14 // <uint32>
const FT_TRANSFERRED byte = 0x08 // <uint32>
const FT_ULPRIORITY byte = 0x19 // Was 17
const FT_UNDEFINED byte = 0x00 // undefined tag
const GED2K_VERSION_MAJOR = 1
const GED2K_VERSION_MINOR = 1
const GED2K_VERSION_TINY = 0
const HASH_LEN int = 16
const HEADER_SIZE int = 6
const HIGHEST_LOWID_ED2K uint32 = 16777216
const LARGE_FILE_OFFSET int = 4
const MAX_ELEMS int = 1000
const MULTIP_OFFSET int = 5
const MaxUint32 = ^uint32(0)
const OPER_AND byte = 0x00
const OPER_NOT byte = 0x02
const OPER_OR byte = 0x01
const OP_ACCEPTUPLOADREQ byte = 0x55 // (null)
const OP_AICHANSWER byte = 0x9C // <HASH 16><uint16><HASH aichhashlen> <data>
const OP_AICHFILEHASHANS byte = 0x9D
const OP_AICHFILEHASHREQ byte = 0x9E
const OP_AICHREQUEST byte = 0x9B // <HASH 16><uint16><HASH aichhashlen>
const OP_ANSWERSOURCES byte = 0x82 //
const OP_ANSWERSOURCES2 byte = 0x84 //
const OP_ASKSHAREDDENIEDANS byte = 0x61 // (null)
const OP_ASKSHAREDDIRS byte = 0x5D // (null)
const OP_ASKSHAREDDIRSANS byte = 0x5F // <count 4>(<len 2><Directory len>)[count]
const OP_ASKSHAREDFILES byte = 0x4A // (null)
const OP_ASKSHAREDFILESANSWER byte = 0x4B // <count 4>(<HASH 16><ID 4><PORT 2><1 Tag_set>)[count]
const OP_ASKSHAREDFILESDIR byte = 0x5E // <len 2><Directory len>
const OP_ASKSHAREDFILESDIRANS byte = 0x60 // <len 2><Directory len><count 4>(<HASH 16><ID 4><PORT 2><1 T
const OP_BUDDYPING byte = 0x9F
const OP_BUDDYPONG byte = 0xA0
const OP_CALLBACK byte = 0x99 // <HASH 16><HASH 16><uint 16>
const OP_CALLBACKREQUEST byte = 0x1C // <ID 4>
const OP_CALLBACKREQUESTED byte = 0x35 // <IP 4><PORT 2>
const OP_CALLBACK_FAIL byte = 0x36 // (null notverified)
const OP_CANCELTRANSFER byte = 0x56 // (null)
const OP_CHANGE_CLIENT_ID byte = 0x4D // <ID_old 4><ID_new 4> // Unused for sending
const OP_CHANGE_SLOT byte = 0x5B // <HASH 16> // Not used for sending
const OP_CHATCAPTCHAREQ byte = 0xA5
const OP_CHATCAPTCHARES byte = 0xA6
const OP_COMPRESSEDPART byte = 0x40 //
const OP_COMPRESSEDPART_I64 byte = 0xA1 // <HASH 16><von 8><size 4><Data len:size>
const OP_DISCONNECT byte = 0x18 // (not verified)
const OP_EDONKEYHEADER byte = 0xE3
const OP_EDONKEYPROT byte = 0xE3
const OP_EMULEINFO byte = 0x01 //
const OP_EMULEINFOANSWER byte = 0x02 //
const OP_EMULEPROT byte = 0xC5
const OP_END_OF_DOWNLOAD byte = 0x49 // <HASH 16> // Unused for sending
const OP_FILEDESC byte = 0x61 // <len 2><NAME len>
const OP_FILEREQANSNOFIL byte = 0x48 // <HASH 16>
const OP_FILESTATUS byte = 0x50 // <HASH 16><count 2><status(bit array) len:((count+7)/8)>
const OP_FOUNDSOURCES byte = 0x42 // <HASH 16><count 1>(<ID 4><PORT 2>)[count]
const OP_FOUNDSOURCES_OBFU byte = 0x44 // <HASH 16><count 1>(<ID 4><PORT 2><obf
Tag_set>)[count]
const OP_GETSERVERLIST byte = 0x14 // (null)client->server
const OP_GETSOURCES byte = 0x19 // <HASH 16>
const OP_GETSOURCES_OBFU byte = 0x23
const OP_HASHSETANSWER byte = 0x52 // <count 2><HASH[count] 16*count>
const OP_HASHSETREQUEST byte = 0x51 // <HASH 16>
const OP_HELLO byte = 0x01 // 0x10<HASH 16><ID 4><PORT 2><1 Tag_set>
const OP_HELLOANSWER byte = 0x4C // <HASH 16><ID 4><PORT 2><1 Tag_set><SERVER_IP 4><SERVER_PORT 2>
const OP_IDCHANGE byte = 0x40 // <NEW_ID 4>
const OP_CHAT_ROOM_REQUEST = 0x39, // (deprecated, not supported by server any longer) const OP_CHAT_BROADCAST = 0x3A, // (deprecated, not supported by server any longer) const OP_CHAT_USER_JOIN = 0x3B, // (deprecated, not supported by server any longer) const OP_CHAT_USER_LEAVE = 0x3C, // (deprecated, not supported by server any longer) const OP_CHAT_USER = 0x3D, // (deprecated, not supported by server any longer)
const OP_KADEMLIAHEADER byte = 0xE4
const OP_KAD_COMPRESSED_UDP byte = 0xE5
const OP_LOGINREQUEST byte = 0x01 // <HASH 16><ID 4><PORT 2><1 Tag_set>
server
const OP_MESSAGE byte = 0x4E // <len 2><Message len>
const OP_MULTIPACKET byte = 0x92
const OP_MULTIPACKETANSWER byte = 0x93
const OP_MULTIPACKET_EXT byte = 0xA4
const OP_OFFERFILES byte = 0x15 // <count 4>(<HASH 16><ID 4><PORT 2><1
const OP_OUTOFPARTREQS byte = 0x57 // (null)
const OP_PACKEDPROT byte = 0xD4
const OP_PREVIEWANSWER byte = 0x91 // <HASH 16><frames 1>{frames * <len 4><frame len>} // Never used for sending on aMule
const OP_PUBLICIP_ANSWER byte = 0x98
const OP_PUBLICIP_REQ byte = 0x97
OP_PEERCACHE_QUERY byte = 0x94 // Unused on aMule - no PeerCache OP_PEERCACHE_ANSWER byte = 0x95 // Unused on aMule - no PeerCache OP_PEERCACHE_ACK byte = 0x96 // Unused on aMule - no PeerCache
const OP_PUBLICKEY byte = 0x85 // <len 1><pubkey len>
const OP_QUERY_MORE_RESULT byte = 0x21 // ?
const OP_QUERY_CHATS = 0x1D, // (deprecated, not supported by server any longer) const OP_CHAT_MESSAGE = 0x1E, // (deprecated, not supported by server any longer) const OP_JOIN_ROOM = 0x1F, // (deprecated, not supported by server any longer)
const OP_QUEUERANK byte = 0x5C // <wert 4> (slot index of the request) // Not used for sending
const OP_QUEUERANKING byte = 0x60 // <RANG 2>
const OP_REASKCALLBACKTCP byte = 0x9A
const OP_REJECT byte = 0x05 // (null)
const OP_REQFILENAMEANSWER byte = 0x59 // <HASH 16><len 4><NAME len>
const OP_REQUESTFILENAME byte = 0x58 // <HASH 16> (more correctly file_name_request)
const OP_REQUESTPARTS byte = 0x47 // <HASH 16><von[3] 4*3><bis[3] 4*3>
const OP_REQUESTPARTS_I64 byte = 0xA3 // <HASH 16><start[3] 8*3><end[3] 8*3>
const OP_REQUESTPREVIEW byte = 0x90 // <HASH 16> // Never used for sending on aMule
const OP_REQUESTSOURCES byte = 0x81 // <HASH 16>
const OP_REQUESTSOURCES2 byte = 0x83 // <HASH 16>
const OP_SEARCHREQUEST byte = 0x16 // <Query_Tree>
Tag_set>)[count]
const OP_SEARCHRESULT byte = 0x33 // <count 4>(<HASH 16><ID 4><PORT 2><1
2>)[count] server->client
const OP_SEARCH_USER byte = 0x1A // <Query_Tree>
v2 <HASH 16><SIZE_4> (17.3) (mandatory on 17.8) v2large <HASH 16><FILESIZE 4 byte 0)><FILESIZE 8> (17.9) (large files only)
const OP_SECIDENTSTATE byte = 0x87 // <state 1><rndchallenge 4>
v2:<len 1><signature len><sigIPused 1>
const OP_SENDINGPART byte = 0x46 // <HASH 16><von 4><bis 4><Daten len:(von-bis)>
const OP_SENDINGPART_I64 byte = 0xA2 // <HASH 16><start 8><end 8><Data len:(end-start)>
const OP_SERVERIDENT byte = 0x41 // <HASH 16><IP 4><PORT 2>{1 TAG_SET}
const OP_SERVERLIST byte = 0x32 // <count 1>(<IP 4><PORT
const OP_SERVERMESSAGE byte = 0x38 // <len 2><Message len>
const OP_SERVERSTATUS byte = 0x34 // <USER 4><FILES 4>
Tag_set>)[count]
const OP_SETREQFILEID byte = 0x4F // <HASH 16>
const OP_SIGNATURE byte = 0x86 // v1: <len 1><signature len>
const OP_STARTUPLOADREQ byte = 0x54 // <HASH 16>
const OP_UDPVERIFYUPA byte = 0x74 // (never used)
const OP_UDPVERIFYUPREQ byte = 0x73 // (never used)
const OP_USERS_LIST byte = 0x43 // <count 4>(<HASH 16><ID 4><PORT 2><1
const OP_VERIFYUPSANSWER byte = 0x72 // (never used)
const OP_VERIFYUPSREQ byte = 0x71 // (never used)
const PARTS_IN_REQUEST int = 3
const PIECE_SIZE int = 9728000
const PIECE_SIZE_UINT64 uint64 = 9728000
const REQUEST_QUEUE_SIZE int = 3
const SEARCH_REQ_ELEM_COUNT int = 30
const SEARCH_REQ_ELEM_LENGTH int = 20
const SEARCH_REQ_QUERY_LENGTH int = 450
const SEARCH_TYPE_BOOL byte = 0x00
const SEARCH_TYPE_STR byte = 0x01
const SEARCH_TYPE_STR_TAG byte = 0x02
const SEARCH_TYPE_UINT32 byte = 0x03
const SEARCH_TYPE_UINT64 byte = 0x08
const SO_AMULE int = 3
const SO_CDONKEY int = 1
const SO_COMPAT_UNK int = 0xFF
const SO_EDONKEY int = 0x33
const SO_EDONKEYHYBRID int = 0x32
const SO_EMULE int = 0
const SO_EMULEPLUS int = 5
const SO_HYDRANODE int = 6
const SO_LIBED2K int = 0x99
const SO_LPHANT int = 0x14
const SO_LXMULE int = 2
const SO_MLDONKEY int = 0x34
const SO_NEW2_MLDONKEY int = 0x0a
const SO_NEW2_SHAREAZA int = 0x28
const SO_NEW_MLDONKEY int = 0x98
const SO_NEW_SHAREAZA int = 0x44
const SO_OLDEMULE int = 0x35
const SO_QMULE int = 0xA0
const SO_SHAREAZA int = 4
const SO_UNKNOWN int = 0x36
const SRC_EXT_OFFSET int = 10
const SRVCAP_AUXPORT = 0x0004
const SRVCAP_IP_IN_LOGIN = 0x0002
const SRVCAP_LARGEFILES = 0x0100
const SRVCAP_NEWTAGS = 0x0008
const SRVCAP_REQUESTCRYPT = 0x0400
const SRVCAP_REQUIRECRYPT = 0x0800
const SRVCAP_SUPPORTCRYPT = 0x0200
const SRVCAP_UNICODE = 0x0010
const SRVCAP_ZLIB = 0x0001
const SRV_TCPFLG_COMPRESSION = 0x00000001
const SRV_TCPFLG_LARGEFILES = 0x00000100
const SRV_TCPFLG_NEWTAGS = 0x00000008
const SRV_TCPFLG_RELATEDSEARCH = 0x00000040
const SRV_TCPFLG_TCPOBFUSCATION = 0x00000400
const SRV_TCPFLG_TYPETAGINTEGER = 0x00000080
const SRV_TCPFLG_UNICODE = 0x00000010
const ST_AUXPORTSLIST byte = 0x93 // <string>
const ST_DESCRIPTION byte = 0x0B // <string>
Unused (0x02-0x0A)
const ST_DYNIP byte = 0x85
Unused (0x0F-0x84)
const ST_FAIL byte = 0x0D // <uint32>
const ST_HARDFILES byte = 0x89
const ST_LASTPING byte = 0x90 // <uint32>
Unused (0x8A-0x8F)
const ST_LASTPING_DEPRECATED byte = 0x86 // <uint32> // DEPRECATED, use 0x90
const ST_LOWIDUSERS byte = 0x94 // <uint32>
const ST_MAXUSERS byte = 0x87
const ST_PING byte = 0x0C // <uint32>
const ST_PREFERENCE byte = 0x0E // <uint32>
const ST_SERVERNAME byte = 0x01 // <string>
const ST_SOFTFILES byte = 0x88
const ST_TCPPORTOBFUSCATION byte = 0x97 // <uint16>
const ST_UDPFLAGS byte = 0x92 // <uint32>
const ST_UDPKEY byte = 0x95 // <uint32>
const ST_UDPKEYIP byte = 0x96 // <uint32>
const ST_UDPPORTOBFUSCATION byte = 0x98 // <uint16>
const ST_VERSION byte = 0x91 // <string>
const TAGTYPE_BLOB byte = 0x07
const TAGTYPE_BOOL byte = 0x05
const TAGTYPE_BOOLARRAY byte = 0x06
const TAGTYPE_BSOB byte = 0x0A
const TAGTYPE_FLOAT32 byte = 0x04
const TAGTYPE_HASH16 byte = 0x01
const TAGTYPE_STR1 byte = 0x11
Compressed string types
const TAGTYPE_STR10 byte = 0x1A
const TAGTYPE_STR11 byte = 0x1B
const TAGTYPE_STR12 byte = 0x1C
const TAGTYPE_STR13 byte = 0x1D
const TAGTYPE_STR14 byte = 0x1E
const TAGTYPE_STR15 byte = 0x1F
const TAGTYPE_STR16 byte = 0x20
const TAGTYPE_STR17 byte = 0x21 // accepted by eMule 0.42f (02-Mai-2004) in receiving code
const TAGTYPE_STR18 byte = 0x22 // accepted by eMule 0.42f (02-Mai-2004) in receiving code
only because of a flaw, those tags are handled correctly, but should not be handled at all
const TAGTYPE_STR19 byte = 0x23 // accepted by eMule 0.42f (02-Mai-2004) in receiving code
only because of a flaw, those tags are handled correctly,
but should not be handled at all
const TAGTYPE_STR2 byte = 0x12
const TAGTYPE_STR20 byte = 0x24 // accepted by eMule 0.42f (02-Mai-2004) in receiving code
only because of a flaw, those tags are handled correctly, but should not be handled at all
const TAGTYPE_STR21 byte = 0x25 // accepted by eMule 0.42f (02-Mai-2004) in receiving code
only because of a flaw, those tags are handled correctly, but should not be handled at all
const TAGTYPE_STR22 byte = 0x26
only because of a flaw, those tags are handled correctly, but should not be handled at all
const TAGTYPE_STR3 byte = 0x13
const TAGTYPE_STR4 byte = 0x14
const TAGTYPE_STR5 byte = 0x15
const TAGTYPE_STR6 byte = 0x16
const TAGTYPE_STR7 byte = 0x17
const TAGTYPE_STR8 byte = 0x18
const TAGTYPE_STR9 byte = 0x19
const TAGTYPE_STRING byte = 0x02
const TAGTYPE_UINT16 byte = 0x08
const TAGTYPE_UINT32 byte = 0x03
const TAGTYPE_UINT64 byte = 0x0B
const TAGTYPE_UINT8 byte = 0x09
const TAGTYPE_UNDEFINED byte = 0x00 // special tag definition for empty objects
const TAG_AVAILABILITY byte = 0x15 // <uint32>
const TAG_BUDDYHASH byte = 0xF8 // <string>
const TAG_CLIENTLOWID byte = 0xF9 // <uint32>
const TAG_COLLECTION byte = 0x05
const TAG_COPIED byte = 0x08 // <uint32>
const TAG_DESCRIPTION byte = 0x0B // <string>
const TAG_ENCRYPTION byte = 0xF3 // <uint8>
const TAG_FAIL byte = 0x0D
const TAG_FILEFORMAT byte = 0x04 // <string>
const TAG_FILENAME byte = 0x01 // <string>
Kad search + some unused tags to mirror the ed2k ones.
const TAG_FILERATING byte = 0xF7 // <uint8>
const TAG_FILESIZE byte = 0x02 // <uint32>
const TAG_FILESIZE_HI byte = 0x3A // <uint32>
const TAG_FILETYPE byte = 0x03 // <string>
const TAG_GAP_END byte = 0x0A // <uint32>
const TAG_GAP_START byte = 0x09 // <uint32>
const TAG_IP_ADDRESS byte = 0x10
const TAG_KADMISCOPTIONS byte = 0xF2 // <uint8>
const TAG_MEDIA_ALBUM byte = 0xD1 // <string>
const TAG_MEDIA_ARTIST byte = 0xD0 // <string>
const TAG_MEDIA_BITRATE byte = 0xD4 // <uint32>
const TAG_MEDIA_CODEC byte = 0xD5 // <string>
const TAG_MEDIA_LENGTH byte = 0xD3 // <uint32> !!!
const TAG_MEDIA_TITLE byte = 0xD2 // <string>
const TAG_PARTS byte = 0x17
const TAG_PART_HASH byte = 0x07
const TAG_PART_PATH byte = 0x06 // <string>
const TAG_PERMISSIONS byte = 0x16
const TAG_PING byte = 0x0C
const TAG_PORT byte = 0x0F
const TAG_PREFERENCE byte = 0x0E
const TAG_PRIORITY byte = 0x13 // <uint32>
const TAG_PUBLISHINFO byte = 0x33 // <uint32>
const TAG_QTIME byte = 0x16
const TAG_SERVERIP byte = 0xFB // <uint32>
const TAG_SERVERPORT byte = 0xFA // <uint16>
const TAG_SOURCEIP byte = 0xFE // <uint32>
const TAG_SOURCEPORT byte = 0xFD // <uint16>
const TAG_SOURCES byte = 0x15 // <uint32>
const TAG_SOURCETYPE byte = 0xFF // <uint8>
const TAG_SOURCEUPORT byte = 0xFC // <uint16>
const TAG_STATUS byte = 0x14 // <uint32>
const TAG_TEMPFILE byte = 0x12 // <string>
const TAG_VERSION byte = 0x11 // <string>
Variables ¶
var EMULE = ED2KHash{0x31, 0xD6, 0xCF, 0xE0, 0xD1, 0x0E, 0xE9, 0x31, 0xB7, 0x3C, 0x59, 0xD7, 0xE0, 0xC0, 0x6F, 0xC0}
var LIBED2K = ED2KHash{0x31, 0xD6, 0xCF, 0xE0, 0xD1, 0x4C, 0xE9, 0x31, 0xB7, 0x3C, 0x59, 0xD7, 0xE0, 0xC0, 0x4B, 0xC0}
var Terminal = ED2KHash{0x31, 0xD6, 0xCF, 0xE0, 0xD1, 0x6A, 0xE9, 0x31, 0xB7, 0x3C, 0x59, 0xD7, 0xE0, 0xC0, 0x89, 0xC0}
var ZERO = ED2KHash{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}
Functions ¶
func BitsToBytes ¶
func DataSize ¶
func DataSize(data interface{}) int
DataSize returns the size of the data required to represent the data when encoded. It returns zero if the type cannot be implemented by the fast path in Read or Write.
func DivCeilInt ¶
func InBlockOffset ¶
func NumPiecesAndBlocks ¶
func TagId2String ¶
func TagType2String ¶
Types ¶
type AddTransferParameters ¶
type AddTransferParameters struct { Hashes HashSet Filename ByteContainer Filesize uint64 Pieces BitField DownloadedBlocks map[int]BitField }
func CreateAddTransferParameters ¶
func CreateAddTransferParameters(hash ED2KHash, size uint64, filename string) AddTransferParameters
func (*AddTransferParameters) Get ¶
func (atp *AddTransferParameters) Get(sb *StateBuffer) *StateBuffer
func (AddTransferParameters) Put ¶
func (atp AddTransferParameters) Put(sb *StateBuffer) *StateBuffer
func (AddTransferParameters) Size ¶
func (atp AddTransferParameters) Size() int
func (AddTransferParameters) WantMoreData ¶
func (atp AddTransferParameters) WantMoreData() bool
type BitField ¶
type BitField struct {
// contains filtered or unexported fields
}
func CloneBitField ¶
func CreateBitField ¶
func (*BitField) ClearTrailingBits ¶
func (bf *BitField) ClearTrailingBits()
func (*BitField) Get ¶
func (bf *BitField) Get(sb *StateBuffer) *StateBuffer
func (BitField) Put ¶
func (bf BitField) Put(sb *StateBuffer) *StateBuffer
type ByteContainer ¶
type ByteContainer []byte
func String2ByteContainer ¶
func String2ByteContainer(s string) ByteContainer
func (*ByteContainer) Get ¶
func (bc *ByteContainer) Get(sb *StateBuffer) *StateBuffer
func (ByteContainer) Put ¶
func (bc ByteContainer) Put(sb *StateBuffer) *StateBuffer
func (ByteContainer) Size ¶
func (bc ByteContainer) Size() int
func (ByteContainer) ToString ¶
func (bc ByteContainer) ToString() string
type Collection ¶
type Collection []Serializable
func (*Collection) Get ¶
func (c *Collection) Get(sb *StateBuffer) *StateBuffer
func (Collection) Put ¶
func (c Collection) Put(sb *StateBuffer) *StateBuffer
type CompressedPart ¶
type CompressedPart struct { Hash ED2KHash Offset uint64 CompressedDataLength uint32 Extended bool }
func (*CompressedPart) Get ¶
func (cp *CompressedPart) Get(sb *StateBuffer) *StateBuffer
func (*CompressedPart) Put ¶
func (cp *CompressedPart) Put(sb *StateBuffer) *StateBuffer
func (CompressedPart) Size ¶
func (cp CompressedPart) Size() int
type ED2KHash ¶
func ResultHash ¶
func String2Hash ¶
func (*ED2KHash) Get ¶
func (h *ED2KHash) Get(sb *StateBuffer) *StateBuffer
func (ED2KHash) Put ¶
func (h ED2KHash) Put(sb *StateBuffer) *StateBuffer
type Endpoint ¶
func EndpointFromString ¶
func FromString ¶
func (*Endpoint) Get ¶
func (i *Endpoint) Get(sb *StateBuffer) *StateBuffer
func (Endpoint) IsLocalAddress ¶
func (Endpoint) Put ¶
func (i Endpoint) Put(sb *StateBuffer) *StateBuffer
type ExtHello ¶
type ExtHello struct { Version byte ProtocolVersion byte Properties TagCollection }
func (*ExtHello) Get ¶
func (eh *ExtHello) Get(sb *StateBuffer) *StateBuffer
func (ExtHello) Put ¶
func (eh ExtHello) Put(sb *StateBuffer) *StateBuffer
type FileAnswer ¶
type FileAnswer struct { Hash ED2KHash Name ByteContainer }
func (*FileAnswer) Get ¶
func (fa *FileAnswer) Get(sb *StateBuffer) *StateBuffer
func (FileAnswer) Put ¶
func (fa FileAnswer) Put(sb *StateBuffer) *StateBuffer
func (FileAnswer) Size ¶
func (fa FileAnswer) Size() int
type FileStatusAnswer ¶
func (*FileStatusAnswer) Get ¶
func (fs *FileStatusAnswer) Get(sb *StateBuffer) *StateBuffer
func (FileStatusAnswer) Put ¶
func (fs FileStatusAnswer) Put(sb *StateBuffer) *StateBuffer
func (FileStatusAnswer) Size ¶
func (fs FileStatusAnswer) Size() int
type FoundFileSources ¶
func (*FoundFileSources) Get ¶
func (fs *FoundFileSources) Get(sb *StateBuffer) *StateBuffer
func (*FoundFileSources) Put ¶
func (fs *FoundFileSources) Put(sb *StateBuffer) *StateBuffer
func (FoundFileSources) Size ¶
func (fs FoundFileSources) Size() int
type GetFileSources ¶
func (*GetFileSources) Get ¶
func (gfs *GetFileSources) Get(*StateBuffer) *StateBuffer
func (GetFileSources) Put ¶
func (gfs GetFileSources) Put(sb *StateBuffer) *StateBuffer
func (GetFileSources) Size ¶
func (gfs GetFileSources) Size() int
type GetServerList ¶
type GetServerList struct{}
func (*GetServerList) Get ¶
func (gl *GetServerList) Get(sb *StateBuffer) *StateBuffer
func (GetServerList) Put ¶
func (gl GetServerList) Put(sb *StateBuffer) *StateBuffer
func (GetServerList) Size ¶
func (gl GetServerList) Size() int
type HashSet ¶
func (*HashSet) Get ¶
func (hs *HashSet) Get(sb *StateBuffer) *StateBuffer
func (HashSet) Put ¶
func (hs HashSet) Put(sb *StateBuffer) *StateBuffer
type Hello ¶
type Hello struct { HashLength byte Answer HelloAnswer }
func (*Hello) Get ¶
func (hello *Hello) Get(sb *StateBuffer) *StateBuffer
func (Hello) Put ¶
func (hello Hello) Put(sb *StateBuffer) *StateBuffer
type HelloAnswer ¶
type HelloAnswer struct { Hash ED2KHash Point Endpoint Properties TagCollection ServerPoint Endpoint }
func (*HelloAnswer) Get ¶
func (ha *HelloAnswer) Get(sb *StateBuffer) *StateBuffer
func (HelloAnswer) Put ¶
func (ha HelloAnswer) Put(sb *StateBuffer) *StateBuffer
func (HelloAnswer) Size ¶
func (ha HelloAnswer) Size() int
type IP ¶
type IP uint32
func (*IP) Get ¶
func (ip *IP) Get(sb *StateBuffer) *StateBuffer
func (IP) Put ¶
func (ip IP) Put(sb *StateBuffer) *StateBuffer
type IdChange ¶
func (*IdChange) Get ¶
func (i *IdChange) Get(sb *StateBuffer) *StateBuffer
func (IdChange) Put ¶
func (i IdChange) Put(sb *StateBuffer) *StateBuffer
type LoginRequest ¶
type LoginRequest UsualPacket
type MiscOptions ¶
type MiscOptions struct { AichVersion uint32 UnicodeSupport uint32 UdpVer uint32 DataCompVer uint32 SupportSecIdent uint32 SourceExchange1Ver uint32 ExtendedRequestsVer uint32 AcceptCommentVer uint32 MultiPacket uint32 SupportsPreview uint32 }
func (MiscOptions) AsUint32 ¶
func (mo MiscOptions) AsUint32() uint32
func (*MiscOptions) Assign ¶
func (mo *MiscOptions) Assign(value uint32)
type MiscOptions2 ¶
type MiscOptions2 uint32
func (*MiscOptions2) SetCaptcha ¶
func (mo *MiscOptions2) SetCaptcha()
func (*MiscOptions2) SetExtMultipacket ¶
func (mo *MiscOptions2) SetExtMultipacket()
func (*MiscOptions2) SetLargeFiles ¶
func (mo *MiscOptions2) SetLargeFiles()
func (*MiscOptions2) SetSourceExt2 ¶
func (mo *MiscOptions2) SetSourceExt2()
func (MiscOptions2) SupportCaptcha ¶
func (mo MiscOptions2) SupportCaptcha() bool
func (MiscOptions2) SupportExtMultipacket ¶
func (mo MiscOptions2) SupportExtMultipacket() bool
func (MiscOptions2) SupportLargeFiles ¶
func (mo MiscOptions2) SupportLargeFiles() bool
func (MiscOptions2) SupportSourceExt2 ¶
func (mo MiscOptions2) SupportSourceExt2() bool
type NumericEntry ¶
type NumericEntry struct {
// contains filtered or unexported fields
}
func CreateNumericEntry ¶
func CreateNumericEntry(val uint64, id byte, op byte) *NumericEntry
func (*NumericEntry) Get ¶
func (entry *NumericEntry) Get(sb *StateBuffer) *StateBuffer
func (NumericEntry) Put ¶
func (entry NumericEntry) Put(sb *StateBuffer) *StateBuffer
func (NumericEntry) Size ¶
func (entry NumericEntry) Size() int
type OperatorEntry ¶
type OperatorEntry byte
func CreateAnd ¶
func CreateAnd() *OperatorEntry
func CreateNot ¶
func CreateNot() *OperatorEntry
func CreateOr ¶
func CreateOr() *OperatorEntry
func (*OperatorEntry) Get ¶
func (entry *OperatorEntry) Get(sb *StateBuffer) *StateBuffer
func (OperatorEntry) IsBoolean ¶
func (o OperatorEntry) IsBoolean() bool
func (OperatorEntry) Put ¶
func (entry OperatorEntry) Put(sb *StateBuffer) *StateBuffer
func (OperatorEntry) Size ¶
func (entry OperatorEntry) Size() int
type PacketCombiner ¶
type PacketCombiner struct {
// contains filtered or unexported fields
}
func (*PacketCombiner) Read ¶
func (pc *PacketCombiner) Read(reader io.Reader) (PacketHeader, []byte, error)
type PacketHeader ¶
func (*PacketHeader) Get ¶
func (ph *PacketHeader) Get(sb *StateBuffer) *StateBuffer
func (PacketHeader) IsEmpty ¶
func (ph PacketHeader) IsEmpty() bool
func (PacketHeader) Put ¶
func (ph PacketHeader) Put(sb *StateBuffer) *StateBuffer
func (*PacketHeader) Read ¶
func (ph *PacketHeader) Read(buffer []byte)
func (*PacketHeader) Reset ¶
func (ph *PacketHeader) Reset()
func (PacketHeader) Size ¶
func (ph PacketHeader) Size() int
func (PacketHeader) Write ¶
func (ph PacketHeader) Write(buffer []byte)
type ParenEntry ¶
type ParenEntry byte
func CreateCloseParen ¶
func CreateCloseParen() *ParenEntry
func CreateOpenParen ¶
func CreateOpenParen() *ParenEntry
func (*ParenEntry) Get ¶
func (entry *ParenEntry) Get(*StateBuffer) *StateBuffer
func (ParenEntry) IsBoolean ¶
func (o ParenEntry) IsBoolean() bool
func (ParenEntry) Put ¶
func (entry ParenEntry) Put(*StateBuffer) *StateBuffer
func (ParenEntry) Size ¶
func (entry ParenEntry) Size() uint
type PieceBlock ¶
func FromOffset ¶
func FromOffset(offset uint64) PieceBlock
func (*PieceBlock) Get ¶
func (pb *PieceBlock) Get(sb *StateBuffer) *StateBuffer
func (PieceBlock) Put ¶
func (pb PieceBlock) Put(sb *StateBuffer) *StateBuffer
func (PieceBlock) Size ¶
func (pb PieceBlock) Size() int
func (PieceBlock) Start ¶
func (pb PieceBlock) Start() uint64
func (PieceBlock) ToString ¶
func (pb PieceBlock) ToString() string
type RequestParts32 ¶
type RequestParts32 struct { Hash ED2KHash BeginOffset [PARTS_IN_REQUEST]uint32 EndOffset [PARTS_IN_REQUEST]uint32 }
func (*RequestParts32) Get ¶
func (rp *RequestParts32) Get(sb *StateBuffer) *StateBuffer
func (RequestParts32) Put ¶
func (rp RequestParts32) Put(sb *StateBuffer) *StateBuffer
func (RequestParts32) Size ¶
func (rp RequestParts32) Size() int
type RequestParts64 ¶
type RequestParts64 struct { Hash ED2KHash BeginOffset [PARTS_IN_REQUEST]uint64 EndOffset [PARTS_IN_REQUEST]uint64 }
func (*RequestParts64) Get ¶
func (rp *RequestParts64) Get(sb *StateBuffer) *StateBuffer
func (RequestParts64) Put ¶
func (rp RequestParts64) Put(sb *StateBuffer) *StateBuffer
func (RequestParts64) Size ¶
func (rp RequestParts64) Size() int
type SearchItem ¶
type SearchItem struct { H ED2KHash Point Endpoint Filename string Filesize uint64 Sources int CompleteSources int Bitrate int MediaLength int Codec string }
func ToSearchItem ¶
func ToSearchItem(up *UsualPacket) SearchItem
type SearchMore ¶
type SearchMore struct{}
func (*SearchMore) Get ¶
func (sm *SearchMore) Get(*StateBuffer) *StateBuffer
func (SearchMore) Put ¶
func (sm SearchMore) Put(sb *StateBuffer) *StateBuffer
func (SearchMore) Size ¶
func (sm SearchMore) Size() int
type SearchRequest ¶
type SearchRequest []Serializable
func PackRequest ¶
func PackRequest(source []Serializable) (SearchRequest, error)
func (*SearchRequest) Get ¶
func (sr *SearchRequest) Get(*StateBuffer) *StateBuffer
func (SearchRequest) Put ¶
func (sr SearchRequest) Put(sb *StateBuffer) *StateBuffer
func (SearchRequest) Size ¶
func (sr SearchRequest) Size() int
type SearchResult ¶
type SearchResult struct { Items []UsualPacket MoreResults byte }
func (*SearchResult) Get ¶
func (sr *SearchResult) Get(sb *StateBuffer) *StateBuffer
func (SearchResult) Put ¶
func (sr SearchResult) Put(*StateBuffer) *StateBuffer
func (SearchResult) Size ¶
func (sr SearchResult) Size() int
type SendingPart ¶
func (*SendingPart) Get ¶
func (sp *SendingPart) Get(sb *StateBuffer) *StateBuffer
func (*SendingPart) Put ¶
func (sp *SendingPart) Put(sb *StateBuffer) *StateBuffer
func (SendingPart) Size ¶
func (sp SendingPart) Size() int
type Serializable ¶
type Serializable interface { Get(sr *StateBuffer) *StateBuffer Put(sr *StateBuffer) *StateBuffer }
type SerializableNumber ¶
type SerializableNumber interface { Get(sr *StateBuffer) *StateBuffer Put(sr *StateBuffer) *StateBuffer AsInteger() uint32 }
type Some ¶
func (*Some) Get ¶
func (s *Some) Get(sb *StateBuffer) *StateBuffer
func (*Some) Put ¶
func (s *Some) Put(sb *StateBuffer) *StateBuffer
type StateBuffer ¶
type StateBuffer struct { Data []byte // contains filtered or unexported fields }
func (StateBuffer) Error ¶
func (sw StateBuffer) Error() error
func (StateBuffer) Offset ¶
func (sw StateBuffer) Offset() int
func (*StateBuffer) Read ¶
func (sb *StateBuffer) Read(data interface{}) *StateBuffer
func (*StateBuffer) ReadUint16 ¶
func (sb *StateBuffer) ReadUint16() uint16
func (*StateBuffer) ReadUint32 ¶
func (sb *StateBuffer) ReadUint32() uint32
func (*StateBuffer) ReadUint64 ¶
func (sb *StateBuffer) ReadUint64() uint64
func (*StateBuffer) ReadUint8 ¶
func (sb *StateBuffer) ReadUint8() uint8
func (StateBuffer) Remain ¶
func (sb StateBuffer) Remain() int
func (*StateBuffer) Write ¶
func (sb *StateBuffer) Write(data interface{}) *StateBuffer
type Status ¶
func (*Status) Get ¶
func (s *Status) Get(sb *StateBuffer) *StateBuffer
func (Status) Put ¶
func (s Status) Put(sb *StateBuffer) *StateBuffer
type StringEntry ¶
type StringEntry struct {
// contains filtered or unexported fields
}
func CreateStringEntry ¶
func CreateStringEntry(val string, id byte) *StringEntry
func CreateStringEntryNoTag ¶
func CreateStringEntryNoTag(val string) *StringEntry
func (*StringEntry) Get ¶
func (entry *StringEntry) Get(sb *StateBuffer) *StateBuffer
func (StringEntry) Put ¶
func (entry StringEntry) Put(sb *StateBuffer) *StateBuffer
func (StringEntry) Size ¶
func (entry StringEntry) Size() int
type Tag ¶
func (*Tag) Get ¶
func (t *Tag) Get(sr *StateBuffer) *StateBuffer
func (Tag) Put ¶
func (t Tag) Put(sw *StateBuffer) *StateBuffer
type TagCollection ¶
type TagCollection []Tag
func (*TagCollection) Get ¶
func (c *TagCollection) Get(sb *StateBuffer) *StateBuffer
func (TagCollection) Put ¶
func (c TagCollection) Put(sb *StateBuffer) *StateBuffer
func (TagCollection) Size ¶
func (c TagCollection) Size() int
type UsualPacket ¶
type UsualPacket struct { Hash ED2KHash Point Endpoint Properties TagCollection }
func (*UsualPacket) Get ¶
func (up *UsualPacket) Get(sb *StateBuffer) *StateBuffer
func (UsualPacket) Put ¶
func (up UsualPacket) Put(sb *StateBuffer) *StateBuffer
func (UsualPacket) Size ¶
func (up UsualPacket) Size() int