public static void Main(String[] args)
{
if (args.Length != 3)
{
Console.WriteLine(
"Usage: mono EdirEventSample <host name> <login dn>"
+ " <password> ");
Console.WriteLine(
"Example: mono EdirEventSample Acme.com \"cn=admin,o=Acme\""
+ " secret ");
Environment.Exit(0);
}
int ldapPort = LdapConnection.DEFAULT_PORT;
int ldapVersion = LdapConnection.Ldap_V3;
String ldapHost = args[0];
String loginDN = args[1];
String password = args[2];
LdapResponseQueue queue = null;
LdapConnection lc = new LdapConnection();
try
{
// connect to the server
lc.Connect(ldapHost, ldapPort);
// authenticate to the server
lc.Bind(ldapVersion, loginDN, password);
//Create an Array of EdirEventSpecifier
EdirEventSpecifier[] specifier = new EdirEventSpecifier[1];
//Register for all Add Value events.
specifier[0] =
new EdirEventSpecifier(EdirEventType.EVT_CREATE_ENTRY,
//Generate an Value Event of Type Add Value
EdirEventResultType.EVT_STATUS_ALL
//Generate Event for all status
);
//Create an MonitorEventRequest using the specifiers.
MonitorEventRequest requestoperation =
new MonitorEventRequest(specifier);
//Send the request to server and get the response queue.
queue = lc.ExtendedOperation(requestoperation, null, null);
}
catch (LdapException e)
{
Console.WriteLine("Error: " + e.ToString());
try
{
lc.Disconnect();
}
catch (LdapException e2)
{
Console.WriteLine("Error: " + e2.ToString());
}
Environment.Exit(1);
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.ToString());
}
Console.WriteLine("Monitoring the events for {0} minutes..", TIME_OUT_IN_MINUTES );
Console.WriteLine();
//Set the timeout value
timeOut= DateTime.Now.AddMinutes(TIME_OUT_IN_MINUTES);
try
{
//Monitor till the timeout happens
while (DateTime.Now.CompareTo(timeOut) < 0)
{
if (!checkForAChange(queue))
break;
System.Threading.Thread.Sleep(10);
}
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
catch (System.Threading.ThreadInterruptedException e)
{
Console.WriteLine(e.Message);
}
//disconnect from the server before exiting
try
{
lc.Abandon(queue); //abandon the search
lc.Disconnect();
}
catch (LdapException e)
{
Console.WriteLine();
Console.WriteLine("Error: " + e.ToString());
}
Environment.Exit(0);
}