/** * Returns the message ID of this message request. * * @return the message ID. Returns -1 if no message * is associated with this exception. */ /* package */ final int getMessageID() { if( request == null) { return -1; } return request.getMessageID(); }
/** * Finds the Message object with the given MsgID, and returns the Message * object. It finds the object and returns it in an atomic operation. * * @param msgId The msgId of the Message object to return * * @return The Message object corresponding to this MsgId. * * @throws NoSuchFieldException when no object with the corresponding * value for the MsgId field can be found. */ /* package */ final synchronized Message findMessageById( int msgId) throws NoSuchFieldException { Message msg = null; for( int i = 0; i < elementCount; i++) { if( (msg = (Message)elementData[i]) == null) { throw new NoSuchFieldException(); } if( msg.getMessageID() == msgId) { return msg; } } throw new NoSuchFieldException(); }
/** * 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; }
/** * 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; }
/** * 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()); }
/** * 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; } }
Message info = (Message)msgs[i]; Debug.trace( Debug.messages, name + "Merging Message(" + info.getMessageID() + "), total " + messages.size());
if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + "sendMessage: Added new Message(" + message.getMessageID() + ")"); debugDisplayMessages();
Debug.trace( Debug.messages, name + "abandon: Removed abandoned Message(" + info.getMessageID() + ")" + " Messages in queue"); debugDisplayMessages();
/** * 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; }
if( Debug.LDAP_DEBUG) { Debug.trace( Debug.messages, name + "Shutdown removed message(" + info.getMessageID() + ")");
Debug.trace( Debug.messages, name + "getLDAPMessage: By ID Return Last Message(" + info.getMessageID() + ")"); debugDisplayMessages(); Debug.trace( Debug.messages, name + "getLDAPMessage: By ID Return Message(" + info.getMessageID() + ")"); debugDisplayMessages(); Debug.trace( Debug.messages, name + "getLDAPMessage: cleanup Message(" + info.getMessageID() + ")"); Debug.trace( Debug.messages, name + "getLDAPMessage: Return response to Message(" + info.getMessageID() + ")"); debugDisplayMessages(); Debug.trace( Debug.messages, name + "getLDAPMessage: no messages queued for Message(" + info.getMessageID() + ")");