public String toXML() { StringBuilder buf = new StringBuilder(); buf.append("<iq "); if (getPacketID() != null) { buf.append("id=\"" + getPacketID() + "\" "); } if (getTo() != null) { buf.append("to=\"").append(StringUtils.escapeForXML(getTo())).append("\" "); } if (getFrom() != null) { buf.append("from=\"").append(StringUtils.escapeForXML(getFrom())).append("\" "); } if (type == null) { buf.append("type=\"get\">"); } else { buf.append("type=\"").append(getType()).append("\">"); } // Add the query section if there is one. String queryXML = getChildElementXML(); if (queryXML != null) { buf.append(queryXML); } // Add the error sub-packet, if there is one. XMPPError error = getError(); if (error != null) { buf.append(error.toXML()); } buf.append("</iq>"); return buf.toString(); }
public String toXML() { StringBuffer buf = new StringBuffer(); buf.append("<iq "); if (getPacketID() != null) { buf.append("id=\"" + getPacketID() + "\" ");
public String toXML() { StringBuilder buf = new StringBuilder(); buf.append("<iq "); if (getPacketID() != null) { buf.append("id=\"" + getPacketID() + "\" ");
public String toXML() { StringBuilder buf = new StringBuilder(); buf.append("<iq "); if (getPacketID() != null) { buf.append("id=\"" + getPacketID() + "\" ");
/** * Acknowledge a IQ packet. * * @param iq * The IQ to acknowledge */ public IQ createAck(IQ iq) { IQ result = null; if (iq != null) { // Don't acknowledge ACKs, errors... if (iq.getType().equals(IQ.Type.SET)) { IQ ack = createIQ(iq.getPacketID(), iq.getFrom(), iq.getTo(), IQ.Type.RESULT); // No! Don't send it. Let it flow to the normal way IQ results get processed and sent. // getConnection().sendPacket(ack); result = ack; } } return result; }
/** * Acknowledge a IQ packet. * * @param iq * The IQ to acknowledge */ public IQ createAck(IQ iq) { IQ result = null; if (iq != null) { // Don't acknowledge ACKs, errors... if (iq.getType().equals(IQ.Type.SET)) { IQ ack = createIQ(iq.getPacketID(), iq.getFrom(), iq.getTo(), IQ.Type.RESULT); // No! Don't send it. Let it flow to the normal way IQ results get processed and sent. // getConnection().sendPacket(ack); result = ack; } } return result; }
private void initStreamHosts() { List streamHosts = new ArrayList(); Iterator it = proxies.iterator(); IQ query; PacketCollector collector; Bytestream response; while (it.hasNext()) { String jid = it.next().toString(); query = new IQ() { public String getChildElementXML() { return "<query xmlns=\"http://jabber.org/protocol/bytestreams\"/>"; } }; query.setType(IQ.Type.GET); query.setTo(jid); collector = connection.createPacketCollector(new PacketIDFilter( query.getPacketID())); connection.sendPacket(query); response = (Bytestream) collector.nextResult(SmackConfiguration .getPacketReplyTimeout()); if (response != null) { streamHosts.addAll(response.getStreamHosts()); } collector.cancel(); } this.streamHosts = streamHosts; }
/** * Loads streamhost address and ports from the proxies on the local server. */ private void initStreamHosts() { List<Bytestream.StreamHost> streamHosts = new ArrayList<Bytestream.StreamHost>(); Iterator it = proxies.iterator(); IQ query; PacketCollector collector; Bytestream response; while (it.hasNext()) { String jid = it.next().toString(); query = new IQ() { public String getChildElementXML() { return "<query xmlns=\"http://jabber.org/protocol/bytestreams\"/>"; } }; query.setType(IQ.Type.GET); query.setTo(jid); collector = connection.createPacketCollector(new PacketIDFilter( query.getPacketID())); connection.sendPacket(query); response = (Bytestream) collector.nextResult(SmackConfiguration .getPacketReplyTimeout()); if (response != null) { streamHosts.addAll(response.getStreamHosts()); } collector.cancel(); } this.streamHosts = streamHosts; }
/** * Notify server to change the carbons state. This method returns * immediately and changes the variable when the reply arrives. * * You should first check for support using isSupportedByServer(). * * @param new_state whether carbons should be enabled or disabled */ public void sendCarbonsEnabled(final boolean new_state) { IQ setIQ = carbonsEnabledIQ(new_state); connection.addPacketListener(new PacketListener() { public void processPacket(Packet packet) { IQ result = (IQ)packet; if (result.getType() == IQ.Type.RESULT) { enabled_state = new_state; } connection.removePacketListener(this); } }, new PacketIDFilter(setIQ.getPacketID())); connection.sendPacket(setIQ); }
/** * Complete and send an error. Complete all the null fields in an IQ error * reponse, using the sesssion information we have or some info from the * incoming packet. * * @param iq * The Jingle packet we are responing to * @param jingleError * the IQ packet we want to complete and send */ public IQ createJingleError(IQ iq, JingleError jingleError) { IQ errorPacket = null; if (jingleError != null) { errorPacket = createIQ(getSid(), iq.getFrom(), iq.getTo(), IQ.Type.ERROR); List<PacketExtension> extList = new ArrayList<PacketExtension>(); extList.add(jingleError); XMPPError error = new XMPPError(XMPPError.Type.CANCEL, jingleError.toString(), "", extList); // Fill in the fields with the info from the Jingle packet errorPacket.setPacketID(iq.getPacketID()); errorPacket.setError(error); // errorPacket.addExtension(jingleError); // NO! Let the normal state machinery do all of the sending. // getConnection().sendPacket(perror); LOGGER.severe("Error sent: " + errorPacket.toXML()); } return errorPacket; }
private static Packet sendXmppMessage(final XMPPConnection conn, final String query, final Type iqType) { LOG.debug("Sending XMPP stanza message..."); final IQ iq = new IQ() { @Override public String getChildElementXML() { return query; } }; final String jid = conn.getUser(); iq.setTo(jidToUser(jid)); iq.setFrom(jid); iq.setType(iqType); final PacketCollector collector = conn.createPacketCollector( new PacketIDFilter(iq.getPacketID())); LOG.debug("Sending XMPP stanza packet:\n"+iq.toXML()); conn.sendPacket(iq); final Packet response = collector.nextResult(40000); return response; }
/** * Complete and send an error. Complete all the null fields in an IQ error * reponse, using the sesssion information we have or some info from the * incoming packet. * * @param iq * The Jingle packet we are responing to * @param error * the IQ packet we want to complete and send */ public IQ createJingleError(IQ iq, JingleError jingleError) { IQ errorPacket = null; if (jingleError != null) { errorPacket = createIQ(getSid(), iq.getFrom(), iq.getTo(), IQ.Type.ERROR); List<PacketExtension> extList = new ArrayList<PacketExtension>(); extList.add(jingleError); XMPPError error = new XMPPError(0, XMPPError.Type.CANCEL, jingleError.toString(), "", extList); // Fill in the fields with the info from the Jingle packet errorPacket.setPacketID(iq.getPacketID()); errorPacket.setError(error); // errorPacket.addExtension(jingleError); // NO! Let the normal state machinery do all of the sending. // getConnection().sendPacket(perror); LOGGER.error("Error sent: " + errorPacket.toXML()); } return errorPacket; }
result.setPacketID(request.getPacketID()); result.setFrom(request.getTo()); result.setTo(request.getFrom());
/** @throws NotConnectedException */ private boolean sendPing() throws NotConnectedException { IQ req = new IQ() { public String getChildElementXML() { return "<ping xmlns='urn:xmpp:ping'/>"; } }; req.setType(IQ.Type.GET); PacketFilter filter = new AndFilter( new PacketIDFilter(req.getPacketID()), new PacketTypeFilter(IQ.class)); PacketCollector collector = connection.createPacketCollector(filter); connection.sendPacket(req); IQ result = (IQ) collector.nextResult(timeout); if (result == null) { LOGGER.warning("ping timeout"); return false; } collector.cancel(); return true; }
result.setPacketID(request.getPacketID()); result.setFrom(request.getTo()); result.setTo(request.getFrom());
result.setPacketID(request.getPacketID()); result.setFrom(request.getTo()); result.setTo(request.getFrom());
result.setPacketID(request.getPacketID()); result.setFrom(request.getTo()); result.setTo(request.getFrom());
result.setPacketID(request.getPacketID()); result.setFrom(request.getTo()); result.setTo(request.getFrom());
result.setPacketID(request.getPacketID()); result.setFrom(request.getTo()); result.setTo(request.getFrom());
/** * Notify server to change the carbons state. This method blocks * some time until the server replies to the IQ and returns true on * success. * * You should first check for support using isSupportedByServer(). * * @param new_state whether carbons should be enabled or disabled * * @return true if the operation was successful */ public boolean setCarbonsEnabled(final boolean new_state) { if (enabled_state == new_state) return true; IQ setIQ = carbonsEnabledIQ(new_state); PacketCollector collector = connection.createPacketCollector(new PacketIDFilter(setIQ.getPacketID())); connection.sendPacket(setIQ); IQ result = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout()); collector.cancel(); if (result != null && result.getType() == IQ.Type.RESULT) { enabled_state = new_state; return true; } return false; }