Protocols/OSCAR/Datatypes: Difference between revisions
Jump to navigation
Jump to search
(Created page with "== Strings ==") |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Strings == | {{Protocols/OSCAR}} | ||
The protocol is built on top of some common base types described below; these are the building blocks for all the other datatypes and SNACs. When encoding or decoding these types, make sure to use network byte order. | |||
== Base Types == | |||
{| class="wikitable" | |||
! Name | |||
! Size | |||
! Notes | |||
|- | |||
| uint8 | |||
| byte | |||
| Unsigned byte | |||
|- | |||
| uint16 | |||
| word (2 bytes) | |||
| Unsigned two byte short | |||
|- | |||
| uint32 | |||
| dword (4 bytes) | |||
| Unsigned four byte int | |||
|- | |||
| f32 | |||
| 4 bytes | |||
| Four byte float | |||
|- | |||
| t70 | |||
| dword (4 bytes) | |||
| Unsigned four byte timestamp, from UNIX EPOCH | |||
|- | |||
| UUID | |||
| 16 bytes | |||
| Sixteen bytes that represent a [[Protocols/OSCAR/UUIDs|UUID]] also known as a GUID | |||
|- | |||
| blob | |||
| length bytes | |||
| Used in a [[Protocols/OSCAR/TLV|TLV]], data type and size is defined by external values | |||
|- | |||
| empty | |||
| 0 bytes | |||
| Used in a [[Protocols/OSCAR/TLV|TLV]], existence of tag causes behavior, the data is ignored | |||
|} | |||
=== Strings === | |||
In general strings are not NULL terminated and are encoded using UTF8. A string is said to be ''compressed'' if all white spaces are removed and all upper case characters are converted to lower case. | |||
{| class="wikitable" | |||
! Name | |||
! Size | |||
! Notes | |||
|- | |||
| string | |||
| data | |||
| Inside of [[Protocols/OSCAR/TLV|TLVs]] a string inherits its length from the TLV length | |||
|- | |||
| string08 | |||
| u08 (byte) + data | |||
| One byte length followed by that many bytes of data | |||
|- | |||
| string16 | |||
| u16 (word) + data | |||
| Two byte length followed by that many bytes of data | |||
|} | |||
[[Category:OSCAR]] |
Latest revision as of 03:57, 17 March 2020
OSCAR Protocol |
Introduction • Terms • Clients |
Basic |
Datatypes • FLAP • SNAC • TLV |
UUIDs • Errors • Tool IDs |
Host Interaction |
Rate Limits • Migration • Messages |
Other Services |
ADMIN • ADVERT • ALERT |
BART • BOS • BUCP • CHAT |
CHAT_NAV |
Tutorials |
Sign On • BART • Rendezvous |
ICBM • Locate • Buddies |
Foodgroups |
OSERVICE (0x0001) |
LOCATE (0x0002) |
BUDDY (0x0003) |
ICBM (0x0004) |
ADVERT (0x0005) |
INVITE (0x0006) |
ADMIN (0x0007) |
POPUP (0x0008) |
PD (0x0009) |
USER_LOOKUP (0x000A) |
STATS (0x000B) |
TRANSLATE (0x000C) |
CHAT_NAV (0x000D) |
CHAT (0x000E) |
ODIR (0x000F) |
BART (0x0010) |
FEEDBAG (0x0013) |
ICQ (0x0015) |
BUCP (0x0017) |
ALERT (0x0018) |
PLUGIN (0x0022) |
UNNAMED_FG_24 (0x0024) |
MDIR (0x0025) |
ARS (0x044A) |
The protocol is built on top of some common base types described below; these are the building blocks for all the other datatypes and SNACs. When encoding or decoding these types, make sure to use network byte order.
Base Types
Name | Size | Notes |
---|---|---|
uint8 | byte | Unsigned byte |
uint16 | word (2 bytes) | Unsigned two byte short |
uint32 | dword (4 bytes) | Unsigned four byte int |
f32 | 4 bytes | Four byte float |
t70 | dword (4 bytes) | Unsigned four byte timestamp, from UNIX EPOCH |
UUID | 16 bytes | Sixteen bytes that represent a UUID also known as a GUID |
blob | length bytes | Used in a TLV, data type and size is defined by external values |
empty | 0 bytes | Used in a TLV, existence of tag causes behavior, the data is ignored |
Strings
In general strings are not NULL terminated and are encoded using UTF8. A string is said to be compressed if all white spaces are removed and all upper case characters are converted to lower case.
Name | Size | Notes |
---|---|---|
string | data | Inside of TLVs a string inherits its length from the TLV length |
string08 | u08 (byte) + data | One byte length followed by that many bytes of data |
string16 | u16 (word) + data | Two byte length followed by that many bytes of data |