Example #1
0
        private bool waitForReply_Renamed_Field = true; // true if wait for reply

        #endregion Fields

        #region Constructors

        internal Message(LdapMessage msg, int mslimit, Connection conn, MessageAgent agent, LdapMessageQueue queue, BindProperties bindprops)
        {
            InitBlock();
            this.msg = msg;
            this.conn = conn;
            this.agent = agent;
            this.queue = queue;
            this.mslimit = mslimit;
            this.msgId = msg.MessageID;
            this.bindprops = bindprops;
            return ;
        }
Example #2
0
		//*************************************************************************
		// helper methods
		//*************************************************************************
		
		/// <summary> Locates the appropriate message agent and sends
		/// the Ldap request to a directory server.
		/// 
		/// </summary>
		/// <param name="msg">the message to send
		/// 
		/// </param>
		/// <param name="timeout">the timeout value
		/// 
		/// </param>
		/// <param name="queue">the response queue or null
		/// 
		/// </param>
		/// <returns> the LdapResponseQueue for this request
		/// 
		/// </returns>
		/// <exception> LdapException A general exception which includes an error
		/// message and an Ldap error code.
		/// </exception>
		private LdapResponseQueue SendRequestToServer(LdapMessage msg, int timeout, LdapResponseQueue queue, BindProperties bindProps)
		{
			MessageAgent agent;
			if (queue == null)
			{
				agent = new MessageAgent();
				queue = new LdapResponseQueue(agent);
			}
			else
			{
				agent = queue.MessageAgent;
			}
			
			agent.sendMessage(conn, msg, timeout, queue, bindProps);
			return queue;
		}
Example #3
0
		/// <summary> Asynchronously performs the search specified by the parameters,
		/// also allowing specification of constraints for the search (such
		/// as the maximum number of entries to find or the maximum time to
		/// wait for search results).
		/// 
		/// </summary>
		/// <param name="base">          The base distinguished name to search from.
		/// 
		/// </param>
		/// <param name="scope">         The scope of the entries to search. The following
		/// are the valid options:
		/// <ul>
		/// <li>SCOPE_BASE - searches only the base DN</li>
		/// 
		/// <li>SCOPE_ONE - searches only entries under the base DN</li>
		/// 
		/// <li>SCOPE_SUB - searches the base DN and all entries
		/// within its subtree</li>
		/// </ul>
		/// </param>
		/// <param name="filter">        The search filter specifying the search criteria.
		/// 
		/// </param>
		/// <param name="attrs">         The names of attributes to retrieve.
		/// 
		/// </param>
		/// <param name="typesOnly">     If true, returns the names but not the values of
		/// the attributes found.  If false, returns the
		/// names and values for attributes found.
		/// 
		/// </param>
		/// <param name="queue">         The queue for messages returned from a server in
		/// response to this request. If it is null, a
		/// queue object is created internally.
		/// 
		/// </param>
		/// <param name="cons">          The constraints specific to the search.
		/// 
		/// </param>
		/// <exception> LdapException A general exception which includes an error
		/// message and an Ldap error code.
		/// </exception>
		public virtual LdapSearchQueue Search(System.String base_Renamed, int scope, System.String filter, System.String[] attrs, bool typesOnly, LdapSearchQueue queue, LdapSearchConstraints cons)
		{
			if ((System.Object) filter == null)
			{
				filter = "objectclass=*";
			}
			if (cons == null)
				cons = defSearchCons;
			
			LdapMessage msg = new LdapSearchRequest(base_Renamed, scope, filter, attrs, cons.Dereference, cons.MaxResults, cons.ServerTimeLimit, typesOnly, cons.getControls());
			MessageAgent agent;
			LdapSearchQueue myqueue = queue;
			if (myqueue == null)
			{
				agent = new MessageAgent();
				myqueue = new LdapSearchQueue(agent);
			}
			else
			{
				agent = queue.MessageAgent;
			}
			
			try
			{
				agent.sendMessage(conn, msg, cons.TimeLimit, myqueue, null);
			}
			catch (LdapException lex)
			{
				throw lex;
			}
			return myqueue;
		}
Example #4
0
		/// <summary> Sends an Ldap request to a directory server.
		/// 
		/// The specified the Ldap request is sent to the directory server
		/// associated with this connection. An Ldap request object is an
		/// {@link LdapMessage} with the operation type set to one of the request
		/// types. You can build a request by using the request classes found in this
		/// package
		/// 
		/// You should note that, since Ldap requests sent to the server
		/// using sendRequest are asynchronous, automatic referral following
		/// does not apply to these requests.
		/// 
		/// </summary>
		/// <param name="request">The Ldap request to send to the directory server.
		/// </param>
		/// <param name="queue">   The queue for messages returned from a server in
		/// response to this request. If it is null, a
		/// queue object is created internally.
		/// </param>
		/// <param name="cons">   The constraints that apply to this request
		/// </param>
		/// <exception>     LdapException A general exception which includes an error
		/// message and an Ldap error code.
		/// 
		/// </exception>
		/// <seealso cref="LdapMessage.Type">
		/// </seealso>
		/// <seealso cref="RfcLdapMessage.isRequest">
		/// </seealso>
		public virtual LdapMessageQueue SendRequest(LdapMessage request, LdapMessageQueue queue, LdapConstraints cons)
		{
			
			
			if (!request.Request)
			{
				throw new System.SystemException("Object is not a request message");
			}
			
			if (cons == null)
			{
				cons = defSearchCons;
			}
			
			// Get the correct queue for a search request
			MessageAgent agent;
			LdapMessageQueue myqueue = queue;
			if (myqueue == null)
			{
				agent = new MessageAgent();
				if (request.Type == LdapMessage.SEARCH_REQUEST)
				{
					myqueue = new LdapSearchQueue(agent);
				}
				else
				{
					myqueue = new LdapResponseQueue(agent);
				}
			}
			else
			{
				if (request.Type == LdapMessage.SEARCH_REQUEST)
				{
					agent = queue.MessageAgent;
				}
				else
				{
					agent = queue.MessageAgent;
				}
			}
			
			try
			{
				agent.sendMessage(conn, request, cons.TimeLimit, myqueue, null);
			}
			catch (LdapException lex)
			{
				throw lex;
			}
			return myqueue;
		}
 /// <summary> Constructs a response queue using the specified message agent
 ///
 /// </summary>
 /// <param name="agent">The message agent to associate with this conneciton
 /// </param>
 /* package */
 internal LdapMessageQueue(System.String myname, MessageAgent agent)
 {
     // Get a unique connection name for debug
     this.agent = agent;
     return;
 }
 /// <summary>
 ///     Constructs a response queue using the specified message agent.
 /// </summary>
 /// <param name="agent">
 ///     The message agent to associate with this conneciton.
 /// </param>
 internal LdapMessageQueue(string myname, MessageAgent agent)
 {
     Agent = agent;
 }
Example #7
0
 /// <summary> Constructs a response queue using a specific client queue
 ///
 /// </summary>
 /// <param name="agent">The message agent to associate with this queue
 /// </param>
 /* package */
 internal LdapSearchQueue(MessageAgent agent) : base("LdapSearchQueue", agent)
 {
     return;
 }
Example #8
0
 /// <summary> merges two message agents
 /// 
 /// </summary>
 /// <param name="fromAgent">the agent to be merged into this one
 /// </param>
 /* package */
 internal void merge(MessageAgent fromAgent)
 {
     System.Object[] msgs = fromAgent.MessageArray;
     for (int i = 0; i < msgs.Length; i++)
     {
         messages.Add(msgs[i]);
         ((Message) (msgs[i])).Agent = this;
     }
     lock (messages)
     {
         if (msgs.Length > 1)
         {
             System.Threading.Monitor.PulseAll(messages); // wake all threads waiting for messages
         }
         else if (msgs.Length == 1)
         {
             System.Threading.Monitor.Pulse(messages); // only wake one thread
         }
     }
     return ;
 }
Example #9
0
 /// <summary> Constructs a response queue using the specified message agent
 ///
 /// </summary>
 /// <param name="agent">The message agent to associate with this conneciton
 /// </param>
 /* package */
 internal LdapMessageQueue(string myname, MessageAgent agent)
 {
     // Get a unique connection name for debug
     this.agent = agent;
 }
 /// <summary> Constructs a response queue using the specified message agent
 /// 
 /// </summary>
 /// <param name="agent">The message agent to associate with this conneciton
 /// </param>
 /* package */
 internal LdapMessageQueue(System.String myname, MessageAgent agent)
 {
     // Get a unique connection name for debug
     this.agent = agent;
     return ;
 }
 /// <summary> Constructs a response queue using the specified message agent
 ///
 /// </summary>
 /// <param name="agent">The message agent to associate with this queue
 /// </param>
 /* package */
 internal LdapResponseQueue(MessageAgent agent) : base("LdapResponseQueue", agent)
 {
     return;
 }
Example #12
0
		/// <summary> Constructs a response queue using the specified message agent
		/// 
		/// </summary>
		/// <param name="agent">The message agent to associate with this queue
		/// </param>
		/* package */
		internal LdapResponseQueue(MessageAgent agent):base("LdapResponseQueue", agent)
		{
			return ;
		}
Example #13
0
 /// <summary> Constructs a response queue using a specific client queue
 /// 
 /// </summary>
 /// <param name="agent">The message agent to associate with this queue
 /// </param>
 /* package */
 internal LdapSearchQueue(MessageAgent agent)
     : base("LdapSearchQueue", agent)
 {
     return ;
 }