diff options
Diffstat (limited to 'pkg/messages')
| -rw-r--r-- | pkg/messages/types/netFile.go | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/pkg/messages/types/netFile.go b/pkg/messages/types/netFile.go index 328900c..c9c587d 100644 --- a/pkg/messages/types/netFile.go +++ b/pkg/messages/types/netFile.go | |||
| @@ -1,17 +1,42 @@ | |||
| 1 | package messages | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import ( |
| 4 | "fmt" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | ) | ||
| 4 | 8 | ||
| 5 | type NetFile struct { | 9 | type NetFile struct { |
| 6 | TransferId int32 | 10 | TransferId uint32 |
| 7 | FileName string | 11 | FileName string |
| 8 | FileRequested bool | 12 | FileFlags string |
| 13 | } | ||
| 14 | |||
| 15 | type NetFileFlags int | ||
| 16 | |||
| 17 | const ( | ||
| 18 | ENetFileFlagsNone NetFileFlags = 0 | ||
| 19 | ENetFileFlagsFileRequested NetFileFlags = 1 | ||
| 20 | ENetFileFlagsUnknown NetFileFlags = 1 << 1 | ||
| 21 | ) | ||
| 22 | |||
| 23 | func (netFileFlags NetFileFlags) String() string { | ||
| 24 | switch netFileFlags { | ||
| 25 | case ENetFileFlagsNone: | ||
| 26 | return "None" | ||
| 27 | case ENetFileFlagsFileRequested: | ||
| 28 | return "FileRequested" | ||
| 29 | case ENetFileFlagsUnknown: | ||
| 30 | return "Unknown" | ||
| 31 | default: | ||
| 32 | return fmt.Sprintf("%d", int(netFileFlags)) | ||
| 33 | } | ||
| 9 | } | 34 | } |
| 10 | 35 | ||
| 11 | func ParseNetFile(reader *bitreader.Reader) NetFile { | 36 | func ParseNetFile(reader *bitreader.Reader) NetFile { |
| 12 | return NetFile{ | 37 | return NetFile{ |
| 13 | TransferId: int32(reader.TryReadBits(32)), | 38 | TransferId: reader.TryReadUInt32(), |
| 14 | FileName: reader.TryReadString(), | 39 | FileName: reader.TryReadString(), |
| 15 | FileRequested: reader.TryReadBool(), | 40 | FileFlags: NetFileFlags(reader.TryReadBits(2)).String(), |
| 16 | } | 41 | } |
| 17 | } | 42 | } |