digraph "MQTTProtocol_connect"
{
 // LATEX_PDF_SIZE
  bgcolor="transparent";
  edge [fontname=FreeSans,fontsize=10,labelfontname=FreeSans,labelfontsize=10];
  node [fontname=FreeSans,fontsize=10,shape=box,height=0.2,width=0.4];
  rankdir="LR";
  Node1 [id="Node000001",label="MQTTProtocol_connect",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="MQTT outgoing connect processing for a client."];
  Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "];
  Node2 [id="Node000002",label="Log",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Log_8c.html#a669722e3f57811871f97c12392aba85d",tooltip="Log a message."];
  Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "];
  Node3 [id="Node000003",label="Messages_get",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Messages_8c.html#a7a6354cb6f78f346b6fbcaaea5fb07bf",tooltip="Get a log message by its index."];
  Node2 -> Node4 [id="edge3_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "];
  Node4 [id="Node000004",label="Paho_thread_lock_mutex",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Thread_8c.html#a1c9cd0a1556e72719a5ed3f9cdf6686f",tooltip="Lock a mutex which has alrea."];
  Node2 -> Node5 [id="edge4_Node000002_Node000005",color="steelblue1",style="solid",tooltip=" "];
  Node5 [id="Node000005",label="Paho_thread_unlock\l_mutex",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Thread_8c.html#a1c21203efa0c10544d24585870fe4757",tooltip="Unlock a mutex which has already been locked."];
  Node1 -> Node6 [id="edge5_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "];
  Node6 [id="Node000006",label="MQTTPacket_send_connect",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacketOut_8c.html#ad3c3f0919760286998e9b9eafaa47a36",tooltip="Send an MQTT CONNECT packet down a socket for V5 or later."];
  Node6 -> Node2 [id="edge6_Node000006_Node000002",color="steelblue1",style="solid",tooltip=" "];
  Node6 -> Node7 [id="edge7_Node000006_Node000007",color="steelblue1",style="solid",tooltip=" "];
  Node7 [id="Node000007",label="MQTTPacket_send",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacket_8c.html#a51f58f1c7864f9fe87b55cc6ccb10129",tooltip="Sends an MQTT packet in one system call write."];
  Node7 -> Node8 [id="edge8_Node000007_Node000008",color="steelblue1",style="solid",tooltip=" "];
  Node8 [id="Node000008",label="MQTTPacket_encode",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacket_8c.html#aadd77a4fa1b2d5c7791e3542c56af856",tooltip="Encodes the message length according to the MQTT algorithm."];
  Node7 -> Node9 [id="edge9_Node000007_Node000009",color="steelblue1",style="solid",tooltip=" "];
  Node9 [id="Node000009",label="MQTTPersistence_putPacket",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPersistence_8c.html#a18eab666c3e6aecd92a6c8f10df808e3",tooltip="Adds a record to the persistent store."];
  Node9 -> Node10 [id="edge10_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "];
  Node10 [id="Node000010",label="clientSocketCompare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Clients_8c.html#a82dc4e265fecdaea2810ccdeab0abf52",tooltip="List callback function for comparing clients by socket."];
  Node9 -> Node11 [id="edge11_Node000009_Node000011",color="steelblue1",style="solid",tooltip=" "];
  Node11 [id="Node000011",label="ListFindItem",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#a46980559fb08bfa0308804d6076e91e1",tooltip="Finds an element in a list by comparing the content or pointer to the content."];
  Node11 -> Node12 [id="edge12_Node000011_Node000012",color="steelblue1",style="solid",tooltip=" "];
  Node12 [id="Node000012",label="ListNextElement",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#a2d9b5364a166a49d333801e049e5515d",tooltip="Forward iteration through a list."];
  Node7 -> Node13 [id="edge13_Node000007_Node000013",color="steelblue1",style="solid",tooltip=" "];
  Node13 [id="Node000013",label="readInt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacket_8c.html#a132d2d5b304d37cd2348a973f7b315de",tooltip="Calculates an integer from two bytes read from the input buffer."];
  Node6 -> Node14 [id="edge14_Node000006_Node000014",color="steelblue1",style="solid",tooltip=" "];
  Node14 [id="Node000014",label="writeChar",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacket_8c.html#ad29ec8b2fbf0ec0195621b44f8945923",tooltip="Writes one character to an output buffer."];
  Node6 -> Node15 [id="edge15_Node000006_Node000015",color="steelblue1",style="solid",tooltip=" "];
  Node15 [id="Node000015",label="writeData",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacket_8c.html#a8886398fbf89872f8e593444d351a5aa",tooltip="Writes length delimited data to an output buffer."];
  Node15 -> Node16 [id="edge16_Node000015_Node000016",color="steelblue1",style="solid",tooltip=" "];
  Node16 [id="Node000016",label="writeInt",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacket_8c.html#a07aa0146eda3d32979142e7df8ad5fc3",tooltip="Writes an integer as 2 bytes to an output buffer."];
  Node6 -> Node16 [id="edge17_Node000006_Node000016",color="steelblue1",style="solid",tooltip=" "];
  Node6 -> Node17 [id="edge18_Node000006_Node000017",color="steelblue1",style="solid",tooltip=" "];
  Node17 [id="Node000017",label="writeUTF",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTPacket_8c.html#af0fcaa11ac05ce448a433a53f9cae420",tooltip="Writes a \"UTF\" string to an output buffer."];
  Node17 -> Node16 [id="edge19_Node000017_Node000016",color="steelblue1",style="solid",tooltip=" "];
  Node1 -> Node18 [id="edge20_Node000001_Node000018",color="steelblue1",style="solid",tooltip=" "];
  Node18 [id="Node000018",label="MQTTProtocol_addressPort",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$MQTTProtocolOut_8c.html#ae9a2970a33893540e42ff5a8d95411dc",tooltip="Separates an address:port into two separate values."];
  Node1 -> Node19 [id="edge21_Node000001_Node000019",color="steelblue1",style="solid",tooltip=" "];
  Node19 [id="Node000019",label="Socket_new",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Socket_8c.html#accf7d8d1529e31b2ad8286627cb662c0",tooltip="Create a new socket and TCP connect to an address/port."];
  Node19 -> Node20 [id="edge22_Node000019_Node000020",color="steelblue1",style="solid",tooltip=" "];
  Node20 [id="Node000020",label="ListAppend",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#ae98f92a6b10685a42b57ec373ce3939b",tooltip="Append an item to a list."];
  Node20 -> Node21 [id="edge23_Node000020_Node000021",color="steelblue1",style="solid",tooltip=" "];
  Node21 [id="Node000021",label="ListAppendNoMalloc",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#a321a3598d6979c7af3f995b77ea2cec3",tooltip="Append an already allocated ListElement and content to a list."];
  Node19 -> Node2 [id="edge24_Node000019_Node000002",color="steelblue1",style="solid",tooltip=" "];
  Node19 -> Node4 [id="edge25_Node000019_Node000004",color="steelblue1",style="solid",tooltip=" "];
  Node19 -> Node5 [id="edge26_Node000019_Node000005",color="steelblue1",style="solid",tooltip=" "];
  Node19 -> Node22 [id="edge27_Node000019_Node000022",color="steelblue1",style="solid",tooltip=" "];
  Node22 [id="Node000022",label="Socket_addSocket",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Socket_8c.html#a4c933d467e9ab2848b9590fe45f21f2f",tooltip="Add a socket to the list of socket to check with select."];
  Node22 -> Node2 [id="edge28_Node000022_Node000002",color="steelblue1",style="solid",tooltip=" "];
  Node22 -> Node4 [id="edge29_Node000022_Node000004",color="steelblue1",style="solid",tooltip=" "];
  Node22 -> Node5 [id="edge30_Node000022_Node000005",color="steelblue1",style="solid",tooltip=" "];
  Node22 -> Node23 [id="edge31_Node000022_Node000023",color="steelblue1",style="solid",tooltip=" "];
  Node23 [id="Node000023",label="Socket_setnonblocking",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Socket_8c.html#ab8ff50df7c89391178aa754083d2f828",tooltip="Set a socket non-blocking, OS independently."];
  Node19 -> Node24 [id="edge32_Node000019_Node000024",color="steelblue1",style="solid",tooltip=" "];
  Node24 [id="Node000024",label="Socket_close",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Socket_8c.html#a9da80ce7e69ae76dee95c94a2349c462",tooltip="Close a socket and remove it from the select list."];
  Node24 -> Node25 [id="edge33_Node000024_Node000025",color="steelblue1",style="solid",tooltip=" "];
  Node25 [id="Node000025",label="intcompare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#a1738915a6d6f10022e9ee1481c0ae452",tooltip="List callback function for comparing integers."];
  Node24 -> Node26 [id="edge34_Node000024_Node000026",color="steelblue1",style="solid",tooltip=" "];
  Node26 [id="Node000026",label="ListRemoveItem",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#a4bb7c34fe9a5832d65f530091e0fad0d",tooltip="Removes and frees an element in a list by comparing the content."];
  Node26 -> Node27 [id="edge35_Node000026_Node000027",color="steelblue1",style="solid",tooltip=" "];
  Node27 [id="Node000027",label="ListUnlink",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#ab82181e0c1d96954f82dee67cee41296",tooltip="Removes and optionally frees an element in a list by comparing the content."];
  Node27 -> Node11 [id="edge36_Node000027_Node000011",color="steelblue1",style="solid",tooltip=" "];
  Node24 -> Node2 [id="edge37_Node000024_Node000002",color="steelblue1",style="solid",tooltip=" "];
  Node24 -> Node4 [id="edge38_Node000024_Node000004",color="steelblue1",style="solid",tooltip=" "];
  Node24 -> Node5 [id="edge39_Node000024_Node000005",color="steelblue1",style="solid",tooltip=" "];
  Node24 -> Node28 [id="edge40_Node000024_Node000028",color="steelblue1",style="solid",tooltip=" "];
  Node28 [id="Node000028",label="Socket_abortWrite",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Socket_8c.html#aa24d7c85b03f09f16c78de0c1a9b3580",tooltip="Continue an outstanding write for a particular socket."];
  Node28 -> Node2 [id="edge41_Node000028_Node000002",color="steelblue1",style="solid",tooltip=" "];
  Node28 -> Node29 [id="edge42_Node000028_Node000029",color="steelblue1",style="solid",tooltip=" "];
  Node29 [id="Node000029",label="SocketBuffer_getWrite",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$SocketBuffer_8c.html#a3bc6dbd0587e7aa304ed6ae7daecedd5",tooltip="Get any queued write data for a specific socket."];
  Node29 -> Node11 [id="edge43_Node000029_Node000011",color="steelblue1",style="solid",tooltip=" "];
  Node29 -> Node30 [id="edge44_Node000029_Node000030",color="steelblue1",style="solid",tooltip=" "];
  Node30 [id="Node000030",label="pending_socketcompare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$SocketBuffer_8c.html#a39f1ee9c98bc12a7be4d7a40b03550d5",tooltip="List callback function for comparing pending_writes by socket."];
  Node24 -> Node31 [id="edge45_Node000024_Node000031",color="steelblue1",style="solid",tooltip=" "];
  Node31 [id="Node000031",label="Socket_close_only",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Socket_8c.html#a0e0f2981efa6caf604e8f0fc1072af90",tooltip="Close a socket without removing it from the select list."];
  Node31 -> Node32 [id="edge46_Node000031_Node000032",color="steelblue1",style="solid",tooltip=" "];
  Node32 [id="Node000032",label="Socket_error",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Socket_8c.html#a39a32a0495e5cba033f3c7fee72ae797",tooltip="Gets the specific error corresponding to SOCKET_ERROR."];
  Node32 -> Node2 [id="edge47_Node000032_Node000002",color="steelblue1",style="solid",tooltip=" "];
  Node24 -> Node33 [id="edge48_Node000024_Node000033",color="steelblue1",style="solid",tooltip=" "];
  Node33 [id="Node000033",label="SocketBuffer_cleanup",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$SocketBuffer_8c.html#abb5eae96f4c62d1e6fefed8d078ecba8",tooltip="Cleanup any buffers for a specific socket."];
  Node33 -> Node11 [id="edge49_Node000033_Node000011",color="steelblue1",style="solid",tooltip=" "];
  Node33 -> Node34 [id="edge50_Node000033_Node000034",color="steelblue1",style="solid",tooltip=" "];
  Node34 [id="Node000034",label="ListRemove",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$LinkedList_8c.html#a8430370b2b15c56ec95bb8e7e36753a5",tooltip="Removes and frees an item in a list by comparing the pointer to the content."];
  Node34 -> Node27 [id="edge51_Node000034_Node000027",color="steelblue1",style="solid",tooltip=" "];
  Node33 -> Node35 [id="edge52_Node000033_Node000035",color="steelblue1",style="solid",tooltip=" "];
  Node35 [id="Node000035",label="SocketBuffer_writeComplete",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$SocketBuffer_8c.html#ae8667990c5933c3af9b90a163bba34dc",tooltip="A socket write has now completed so we can get rid of the queue."];
  Node35 -> Node26 [id="edge53_Node000035_Node000026",color="steelblue1",style="solid",tooltip=" "];
  Node35 -> Node30 [id="edge54_Node000035_Node000030",color="steelblue1",style="solid",tooltip=" "];
  Node33 -> Node36 [id="edge55_Node000033_Node000036",color="steelblue1",style="solid",tooltip=" "];
  Node36 [id="Node000036",label="socketcompare",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$SocketBuffer_8c.html#acebc1cbb93be4588f33b04ed404f6dbf",tooltip="List callback function for comparing socket_queues by socket."];
  Node19 -> Node32 [id="edge56_Node000019_Node000032",color="steelblue1",style="solid",tooltip=" "];
}
