/** * Send a message to remote clients or servers */ public void Send(Message m) { // TODO: Later, we want to perform whole lookups // for a list together instead of one at a time // which is lolz. // inspect message destinations, if multiple, use group_multicast else just send with p2p List<string> destinations = m.GetDestinationUsers (); List<string> destinationUris = new List<string> (); List<string> destinationcopy = new List<string> (); foreach (string destination in destinations) { //DebugInfo ("Performing lookup for {0}", destination); // TODO: If server returns NO SUCH USER, then bail out string destination_uri = m_lookupCallback (destination); // for now, assume destination is uri //DebugInfo ("Lookup returned {0}", destination_uri); destinationUris.Add (destination_uri); destinationcopy.Add (destination); } foreach (string uri in destinationUris) { Send (m, uri, destinationcopy[0]); destinationcopy.RemoveAt (0); } }