GrowlNetworkNotificationFlags server sends a packet in this format. |
Various flags.
struct GrowlNetworkNotification { struct GrowlNetworkPacket common; struct GrowlNetworkNotificationFlags { unsigned reserved: 12; signed priority: 3; unsigned sticky: 1; } flags; //size = 16 (12 + 3 + 1) /* In addition to being unsigned, the notification name length * is in network byte order. */ unsigned short nameLen; /* @discussion In addition to being unsigned, the title length is in * network byte order. */ unsigned short titleLen; /* In addition to being unsigned, the description length is in * network byte order. */ unsigned short descriptionLen; /* In addition to being unsigned, the application name length * is in network byte order. */ unsigned short appNameLen; /* The variable-sized data of a notification is: * - Notification name, in UTF-8 encoding, for nameLen bytes. * - Title, in UTF-8 encoding, for titleLen bytes. * - Description, in UTF-8 encoding, for descriptionLen bytes. * - Application name, in UTF-8 encoding, for appNameLen bytes. * - The MD5/SHA256 checksum of all the data preceding the checksum. */ unsigned char data[]; };
common
- The Growl packet header.
flags
- The priority number and the sticky bit.
nameLen
- The length of the notification name.
titleLen
- The length of the notification title.
descriptionLen
- The length of the notification description.
appNameLen
- The length of the application name.
data
- Variable-sized data.
reserved
- reserved for future use.
priority
- the priority as a signed 3-bit integer from -2 to +2.
sticky
- the sticky flag.
This 16-bit packed structure contains the priority as a signed 3-bit integer from -2 to +2, and the sticky flag as a single bit. The high 12 bits of the structure are reserved for future use.
GrowlNetworkPacket |
This struct is a header common to all incoming Growl network packets which identifies the type and version of the packet.
struct GrowlNetworkPacket { unsigned char version; unsigned char type; };
GrowlNetworkRegistration |
The format of a registration packet.
struct GrowlNetworkRegistration { struct GrowlNetworkPacket common; /* This name is used both internally and in the Growl * preferences. * * The application name should remain stable between different versions * and incarnations of your application. * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" * and "SurfWriter Lite" are not. * * In addition to being unsigned, the application name length is in * network byte order. */ unsigned short appNameLen; /* These names are used both internally and in the Growl * preferences. For this reason, they should be human-readable. */ unsigned char numAllNotifications; unsigned char numDefaultNotifications; /* The variable-sized data of a registration is: * - The application name, in UTF-8 encoding, for appNameLen bytes. * - The list of all notification names. * - The list of default notifications, as 8-bit unsigned indices into the list of all notifications. * - The MD5/SHA256 checksum of all the data preceding the checksum. * * Each notification name is encoded as: * - Length: two bytes, unsigned, network byte order. * - Name: As many bytes of UTF-8-encoded text as the length says. * And there are numAllNotifications of these. */ unsigned char data[]; };
common
- The Growl packet header.
appNameLen
- The name of the application that is registering.
numAllNotifications
- The number of notifications in the list.
numDefaultNotifications
- The number of notifications in the list that are enabled by default.
data
- Variable-sized data.
A Growl client that wants to register with a Growl server sends a packet in this format.
© The Growl Project (Last Updated May 14, 2005)