/** * Get a list of message ids controlled by this agent * * @return an array of integers representing the message ids */ /* package */ final int[] getMessageIDs() { int size = messages.size(); int[] ids = new int[size]; Message info; for( int i = 0; i < size; i++ ) { info = (Message)messages.elementAt(i); ids[i] = info.getMessageID(); } return ids; }
/** * Returns the Message object for a given messageID * * @param msgid the message ID. */ /* package */ final Message getMessage(int msgid) throws NoSuchFieldException { return messages.findMessageById( msgid); }
/** * empty and return all messages owned by this agent * * */ /* package */ Object[] getMessageArray() { return messages.getObjectArray(); }
Debug.trace( Debug.messages, name + "getLDAPMessage(" + msgId + "), " + messages.size() + " messages active"); if( messages.size() == 0) { return null; Message info = messages.findMessageById( msgId.intValue()); messages.removeElement( info); if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + Debug.trace( Debug.messages, name + "getLDAPMessage: Look for any reply, " + messages.size() + " messages active"); for( int i = 0; i < messages.size(); i++) { if( next >= messages.size() ) { next = 0; info = (Message)messages.elementAt(next); indexLastRead = next++; rfcMsg = info.getReply(); messages.removeElement( info); // remove from list if( messages.size() == 0) { return null;
/** * Abandon all requests on this MessageAgent */ /* package */ final void abandonAll() { int size = messages.size(); Message info; for( int i = 0; i < size; i++ ) { info = (Message)messages.elementAt(i); // Message complete and no more replies, remove from id list if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + "abandonAll: Removing abandoned Message(" + info.getMessageID() + ")"); } messages.removeElement( info); info.abandon( null, null); } if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + "Messages in queue"); debugDisplayMessages(); } return; }
messages.addElement( msgs[i]); ((Message)(msgs[i])).setAgent( this); if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + "Merging Message(" + info.getMessageID() + "), total " + messages.size());
try { info = messages.findMessageById( msgId); messages.removeElement( info); // This message is now dead info.abandon( cons, null);
/** * Get number of messages queued. * Don't count the last message containing result code. */ /* package */ int getCount() { int size = replies.size(); if( complete) { return (size > 0 ? (size -1) : size); } else { return size; } }
/** * Get a count of all messages queued */ /* package */ int getCount() { int count = 0; Object[] msgs = messages.toArray(); for(int i = 0; i < msgs.length; i++) { Message m = (Message)msgs[i]; count += m.getCount(); } return count; }
/** * Writes an LDAPMessage to the LDAP server over a socket. * * @param info the Message containing the message to write. */ /* package */ void writeMessage(Message info) throws LDAPException { messages.addElement( info); // For bind requests, if not connected, attempt to reconnect if( info.isBindRequest() && (isConnected() == false) && (host != null)){ connect( host, port, info.getMessageID()); } if(isConnected()) { LDAPMessage msg = info.getRequest(); writeMessage( msg); return; } else throw new LDAPException(ExceptionMessages.CONNECTION_CLOSED, new Object[] { host, new Integer(port) }, LDAPException.CONNECT_ERROR, null,new IOException()); }
/** * Removes a Message class from the Connection's list * * @param info the Message class to remove from the list */ /* package */ final void removeMessage( Message info) { boolean done = messages.removeElement(info); if( Debug.LDAP_DEBUG) { if( done) { Debug.trace( Debug.messages, name + "Removed Message(" + info.getMessageID() + ")"); } else { Debug.trace( Debug.messages, name + "Removing Message(" + info.getMessageID() + ") - not found"); } } return; }
info = (Message)messages.remove(0); if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name +
replies.addElement( message); "Reply Queued (" + replies.size() + " in queue)"); res = ((RfcResponse)message.getResponse()).getResultCode().intValue(); Debug.trace( Debug.messages, name + "Queued LDAPResult (" + replies.size() + " in queue), message complete stopping timer, status " + res);
/** * Returns true if replies are queued * * @return false if no replies are queued, otherwise true */ /* package */ boolean hasReplies() { if( replies == null) { // abandoned request return false; } return (replies.size() > 0); }
/** * Debug code to print messages in message vector */ private void debugDisplayMessages() { if( Debug.LDAP_DEBUG) { Object[] dbgmsgs = messages.toArray(); Debug.trace( Debug.messages, name + "Queue Status"); if( dbgmsgs.length == 0) { Debug.trace( Debug.messages, name + "\t" + "No messages queued"); } for(int i = 0; i < dbgmsgs.length; i++) { Message m = (Message)dbgmsgs[i]; Debug.trace( Debug.messages, name + "\t" + i + ".: Message(" + m.getMessageID() + ")"); } } return; } }
messages.addElement( message); if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name +
Object msg = null; while( waitForReply ) { if( replies.isEmpty()) { if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + msg = replies.remove(0); // Atomic get and remove if( (complete || ! acceptReplies) && replies.isEmpty()) { Debug.trace( Debug.messages, name + "Got reply from queue(" + replies.size() + " remaining in queue)");
replies.addElement( new LDAPResponse( informUserEx, conn.getActiveReferral())); if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + "Queued exception as LDAPResponse (" + replies.size() + " in queue):" + " following referral=" +