def client_send(self, dest, msg):
     #print "sending", msg.service, msg.type, str(dest)
     HOST = dest.IPAddr
     PORT = dest.ctrlPort
     DATA = msg.serialize()
     ##print len(DATA)
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     sock.settimeout(2.0)
     try:
         # Connect to server and send data
         sock.connect((HOST, PORT))
         sock.send(DATA)
         sock.shutdown(1)
         ack = sock.recv(1)
     except socket.error:
         ##print e
         #sock.close()
         print "SOCKET ERROR"
         print "Tried to send to ", HOST, ":",PORT
         node.message_failed(msg,dest)
         #self.update_messages_in_queue(dest)
     finally:
         #print ">",
         sock.close()
         ##print DATA[-20:],len(DATA)%8
         return True
 def send_message(self,msg,dest):
     time.sleep(0.01)
     data = msg.serialize()
     inst.addBytes("OUT",len(data))
     try:
         server = ServerProxy("http://"+str(dest.IPAddr)+":"+str(dest.ctrlPort))
         server.recive(data)
     except Exception:
         node.message_failed(msg,dest)
 def update_messages_in_queue(self, failed_node):
     hold = []
     while not self.tosend.empty():
         temp = self.tosend.get()
         self.tosend.task_done()
         if temp[1] == failed_node:
             node.message_failed(temp[2],temp[1])
         else:
             hold.append(temp)
     for h in hold:
         self.tosend.put()