A typical conversation might look like the following:
FD: listens DR: makes connection DR: Hello <Director-name> calling <password> FD: 2000 OK Hello DR: JobId=nnn Authorization=<password> FD: 2000 OK Job DR: storage address = <Storage daemon address> port = <port-number> name = <DeviceName> mediatype = <MediaType> FD: 2000 OK storage DR: include DR: <directory1> DR: <directory2> ... DR: Null packet FD: 2000 OK include DR: exclude DR: <directory1> DR: <directory2> ... DR: Null packet FD: 2000 OK exclude DR: full FD: 2000 OK full DR: save FD: 2000 OK save FD: Attribute record for each file as sent to the Storage daemon (described above). FD: Null packet FD: <append close responses from Storage daemon> e.g. 3000 OK Volumes = <number of volumes> 3001 Volume = <volume-id> <start file> <start block> <end file> <end block> <volume session-id> 3002 Volume data = <date/time of last write> <Number bytes written> <number errors> ... additional Volume / Volume data pairs for volumes 2 .. n FD: Null packet FD: close socket