public void SendFile(string to, string fileName) { string proxyServer = "proxy.teamwiki.de"; string proxyPort = "5000"; JingleSession session = new JingleSession(conn, to, fileName, proxyServer, proxyPort); ongoingTransports[session.transportSid] = session; }
public void OnJingleIq(object sender, agsXMPP.protocol.client.IQ iq) { if (!iq.HasTag("jingle")) { return; } var jingle = iq.SelectSingleElement("jingle"); Element contentIn, transportIn; string sid; JingleSession session; switch (jingle.GetAttribute("action")) { // incoming, first step case "session-initiate": session = new JingleSession(conn, iq); var fileName = ""; try { fileName = jingle.SelectSingleElement("file", true).GetTag("name"); } catch (Exception exx) { } if (!AutoAccept) // && MessageBox.Show("Incoming File Transfer from " + iq.From.ToString() + "\n\n" +fileName, "Jingle file-transfer", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.Cancel) { { SendIqResult(iq); var sesTerm = session.BuildSessionTerminate("decline"); conn.Send(sesTerm); return; } SendIqResult(iq); ongoingTransports[session.transportSid] = session; session.OnFileReceived += ses_OnFileReceived; var ack = session.BuildSessionAccept(); conn.Send(ack); var cFirst = session.transportIn.FirstChild; var cUsed = session.BuildCandidateUsed(cFirst.GetAttribute("cid"), "candidate-used"); conn.Send(cUsed); session.DoTransmission(cFirst); break; // incoming AND sending, second step case "transport-info": contentIn = jingle.SelectSingleElement("content"); transportIn = contentIn.SelectSingleElement("transport"); sid = transportIn.GetAttribute("sid"); if (!ongoingTransports.ContainsKey(sid)) { SendIqerror(iq); return; } session = ongoingTransports[sid]; if (transportIn.HasTag("candidate-used")) { var cid = transportIn.SelectSingleElement("candidate-used").GetAttribute("cid"); var info = session.GetTransportCandidate(cid); bool ok = session.DoTransmission(info); if (ok) { SendIqResult(iq); } else { SendIqerror(iq); } } else if (transportIn.HasTag("candidate-error")) { SendIqResult(iq); } break; // sending, first step case "session-accept": contentIn = jingle.SelectSingleElement("content"); transportIn = contentIn.SelectSingleElement("transport"); sid = transportIn.GetAttribute("sid"); if (!ongoingTransports.ContainsKey(sid)) { SendIqerror(iq); return; } session = ongoingTransports[sid]; var cFirst1 = session.transportIn.FirstChild; var cUsed1 = session.BuildCandidateUsed(cFirst1.GetAttribute("cid"), "candidate-used"); conn.Send(cUsed1); break; } }