Example #1
0
 public void run(ClientWithLoad client)
 {
     try
     {
         StdErrorOut.Instance.StdOut(LogLevel.debug, "Kinesistask.run");
         if (!started_)
         {
             started_       = true;
             kinesisClient_ = client.ActualClient;
             start_         = DateTime.Now;
             end_deadline_  = start_.AddMilliseconds(timeout_);
             StdErrorOut.Instance.StdOut(LogLevel.debug, "Kinesistask.run before Execute();");
             Execute();
             Interlocked.Decrement(ref client.Load);
         }
         else
         {
             Interlocked.Decrement(ref client.Load);
             throw new Exception("The same task cannot be run more than once");
         }
     }
     catch (Exception e)
     {
         StdErrorOut.Instance.StdError("Error in Kinesis Task run", e);
     }
 }
Example #2
0
        public ClientWithLoad GetNextLeastUsedClient()
        {
            ClientWithLoad retVal = null;

            lock (clients)
                retVal = clients.Min((clientWL) => clientWL);

            Interlocked.Increment(ref retVal.Load);
            return(retVal);
        }
Example #3
0
 void CreateClients(int maxConnections)
 {
     try
     {
         clients = new ClientWithLoad[maxConnections];
         for (int i = 0; i < maxConnections; i++)
         {
             clients[i] = new ClientWithLoad()
             {
                 ActualClient = string.IsNullOrEmpty(cred_.SessionToken) ? new AmazonKinesisClient(cred_.Akid, cred_.SecretKey, region_) : new AmazonKinesisClient(cred_.Akid, cred_.SecretKey, cred_.SessionToken, region_)
             }
         }
         ;
     }
     catch (Exception ex)
     {
         StdErrorOut.Instance.StdOut(LogLevel.error, ex.ToString());
         throw ex;
     }
 }