/** * Departs the workgroup queue. If the user is not currently in the queue, this * method will do nothing.<p> * <p/> * Normally, the user would not manually leave the queue. However, they may wish to * under certain circumstances -- for example, if they no longer wish to be routed * to an agent because they've been waiting too long. * * @throws XMPPException if an error occured trying to send the depart queue * request to the server. */ public void departQueue() throws XMPPException { // If not in the queue ignore the depart request. if (!inQueue) { return; } DepartQueuePacket departPacket = new DepartQueuePacket(this.workgroupJID); PacketCollector collector = this.connection.createPacketCollector(new PacketIDFilter(departPacket.getPacketID())); connection.sendPacket(departPacket); IQ response = (IQ)collector.nextResult(5000); collector.cancel(); if (response == null) { throw new XMPPException("No response from the server."); } if (response.getError() != null) { throw new XMPPException(response.getError()); } // Notify listeners that we're no longer in the queue. fireQueueDepartedEvent(); }
/** * Departs the workgroup queue. If the user is not currently in the queue, * this method will do nothing. * <p> * <p/> * Normally, the user would not manually leave the queue. However, they may * wish to under certain circumstances -- for example, if they no longer * wish to be routed to an agent because they've been waiting too long. * * @throws XMPPException * if an error occured trying to send the depart queue request * to the server. */ public void departQueue() throws XMPPException { // If not in the queue ignore the depart request. if (!inQueue) { return; } DepartQueuePacket departPacket = new DepartQueuePacket( this.workgroupJID); PacketCollector collector = this.connection .createPacketCollector(new PacketIDFilter(departPacket .getPacketID())); connection.sendPacket(departPacket); IQ response = (IQ) collector.nextResult(5000); collector.cancel(); if (response == null) { throw new XMPPException("No response from the server."); } if (response.getError() != null) { throw new XMPPException(response.getError()); } // Notify listeners that we're no longer in the queue. fireQueueDepartedEvent(); }
/** * Removes a user from the workgroup queue. This is an administrative action that the * <p/> * The agent is not guaranteed of having privileges to perform this action; an exception * denying the request may be thrown. * * @param userID the ID of the user to remove. * @throws XMPPException if an exception occurs. * @throws NotConnectedException */ public void dequeueUser(String userID) throws XMPPException, NotConnectedException { // todo: this method simply won't work right now. DepartQueuePacket departPacket = new DepartQueuePacket(this.workgroupJID); // PENDING this.connection.sendStanza(departPacket); }
/** * Departs the workgroup queue. If the user is not currently in the queue, this * method will do nothing.<p> * <p/> * Normally, the user would not manually leave the queue. However, they may wish to * under certain circumstances -- for example, if they no longer wish to be routed * to an agent because they've been waiting too long. * * @throws XMPPErrorException if an error occured trying to send the depart queue * request to the server. * @throws NoResponseException * @throws NotConnectedException */ public void departQueue() throws NoResponseException, XMPPErrorException, NotConnectedException { // If not in the queue ignore the depart request. if (!inQueue) { return; } DepartQueuePacket departPacket = new DepartQueuePacket(this.workgroupJID); connection.createPacketCollectorAndSend(departPacket).nextResultOrThrow(); // Notify listeners that we're no longer in the queue. fireQueueDepartedEvent(); }