Package com.davfx.ninio.common

Examples of com.davfx.ninio.common.Queue


    this.port = port;
    return this;
  }
 
  public AutoCloseable start(SimpleHttpServerHandler handler) {
    Queue q;
    boolean shouldCloseQueue;
    if (queue == null) {
      try {
        q = new Queue();
      } catch (IOException e) {
        LOGGER.error("Queue could not be created", e);
        return null;
      }
      shouldCloseQueue = true;
    } else {
      q = queue;
      shouldCloseQueue = false;
    }

    Address a = address;
    if (port >= 0) {
      a = new Address(port);
    }
   
    new HttpServer(q, trust, a, new HttpServerHandlerFactory() {
      @Override
      public HttpServerHandler create() {
        return new HttpServerHandlerToSimpleHttpServerHandler(handler);
      }
     
      @Override
      public void closed() {
        if (shouldCloseQueue) {
          q.close();
        }
        LOGGER.debug("Server closed");
      }

      @Override
      public void failed(IOException e) {
        if (shouldCloseQueue) {
          q.close();
        }
        LOGGER.error("Server could not be launched", e);
      }
    });
   
    return new AutoCloseable() {
      @Override
      public void close() {
        if (shouldCloseQueue) {
          q.close();
        }
      }
    };
  }
View Full Code Here


  }
 
  public Finished finish() {
    HttpClient onClient;
    boolean shouldCloseClient;
    Queue q;
    boolean shouldCloseQueue;
    if (client == null) {
      if (queue == null) {
        try {
          q = new Queue();
        } catch (IOException e) {
          LOGGER.error("Queue could not be created", e);
          return null;
        }
        shouldCloseQueue = true;
      } else {
        q = queue;
        shouldCloseQueue = false;
      }
      onClient = new HttpClient(q, trust);
      shouldCloseClient = true;
    } else {
      onClient = client;
      shouldCloseClient = false;
      q = null;
      shouldCloseQueue = false;
    }
   
    return new Finished() {
      @Override
      public void close() {
        if (shouldCloseQueue) {
          q.close();
        }
        if (shouldCloseClient) {
          onClient.close();
        }
      }
View Full Code Here

    this.readyFactory = readyFactory;
    return this;
  }
 
  public void connect(SnmpClientHandler clientHandler) {
    Queue q;
    ScheduledExecutorService re;
    boolean shouldCloseQueue;
    if (queue == null) {
      try {
        q = new Queue();
      } catch (IOException e) {
        clientHandler.failed(e);
        return;
      }
      re = Executors.newSingleThreadScheduledExecutor();
      shouldCloseQueue = true;
    } else {
      q = queue;
      re = repeatExecutor;
      shouldCloseQueue = false;
    }

    final Address a;
    if (host != null) {
      if (port < 0) {
        a = new Address(host, address.getPort());
      } else {
        a = new Address(host, port);
      }
    } else {
      a = address;
    }
   
    final Set<InstanceMapper> instanceMappers = new HashSet<>();
    re.scheduleAtFixedRate(new Runnable() {
      @Override
      public void run() {
        q.post(new Runnable() {
          @Override
          public void run() {
            Date now = new Date();
            for (InstanceMapper i : instanceMappers) {
              i.repeat(now, minTimeToRepeat, timeoutFromBeginning, timeoutFromLastReception);
            }
           
            Iterator<InstanceMapper> ii = instanceMappers.iterator();
            while (ii.hasNext()) {
              InstanceMapper i = ii.next();
              if (i.instances.isEmpty()) {
                ii.remove();
              }
            }
          }
        });
      }
    }, 0, (long) (repeatTime * 1000d), TimeUnit.MILLISECONDS);

    q.post(new Runnable() {
      @Override
      public void run() {
        ByteBufferAllocator allocator = new OnceByteBufferAllocator();
        Ready ready = readyFactory.create(q, allocator);
       
        ready.connect(a, new ReadyConnection() {
          private final InstanceMapper instanceMapper = new InstanceMapper();

          @Override
          public void handle(Address address, ByteBuffer buffer) {
            PacketParser parser;
            try {
              parser = new PacketParser(buffer);
            } catch (Exception e) {
              LOGGER.error("Invalid packet", e);
              return;
            }
           
            instanceMapper.handle(parser);
          }
         
          @Override
          public void failed(IOException e) {
            if (shouldCloseQueue) {
              re.shutdown();
              q.close();
            }
            if (instanceMappers.remove(instanceMapper)) {
              clientHandler.failed(e);
            }
          }
         
          @Override
          public void connected(CloseableByteBufferHandler write) {
            instanceMappers.add(instanceMapper);
           
            SnmpWriter w = new SnmpWriter(write, community);
           
            clientHandler.launched(new SnmpClientHandler.Callback() {
              @Override
              public void close() {
                if (instanceMappers.remove(instanceMapper)) {
                  instanceMapper.closedByUser();
                }
               
                write.close();

                if (shouldCloseQueue) {
                  re.shutdown();
                  q.close();
                }
              }
              @Override
              public void get(Oid oid, GetCallback callback) {
                Instance i = new Instance(instanceMapper, callback, w, oid, getLimit, bulkSize);
                instanceMapper.map(i);
                w.get(i.instanceId, oid);
              }
            });
          }
         
          @Override
          public void close() {
            if (shouldCloseQueue) {
              re.shutdown();
              q.close();
            }
            if (instanceMappers.remove(instanceMapper)) {
              instanceMapper.closedByPeer();
            }
          }
View Full Code Here

  private final SnmpClientCache snmp;
  private final PingClientCache ping;
  private final RegisteredFunctionsScriptRunner runner;

  public AllAvailableScriptRunner() throws IOException {
    queue = new Queue();
    singleExecutorScriptRunner = new SingleExecutorScriptRunner();
    http = new HttpClient(queue, null);
    telnet = new WaitingTelnetClientCache(queue);
    snmp = new SnmpClientCache(queue);
    ping = new PingClientCache(queue);
View Full Code Here

    this.readyFactory = readyFactory;
    return this;
  }
 
  public void connect(TelnetClientHandler clientHandler) {
    Queue q;
    ScheduledExecutorService re;
    boolean shouldCloseQueue;
    if (queue == null) {
      try {
        q = new Queue();
      } catch (IOException e) {
        clientHandler.failed(e);
        return;
      }
      re = Executors.newSingleThreadScheduledExecutor();
      shouldCloseQueue = true;
    } else {
      q = queue;
      re = callWithEmptyExecutor;
      shouldCloseQueue = false;
    }

    final Address a;
    if (host != null) {
      if (port < 0) {
        a = new Address(host, address.getPort());
      } else {
        a = new Address(host, port);
      }
    } else {
      a = address;
    }

    final Set<TelnetResponseReader> connections = new HashSet<>();
    if (callWithEmptyTime > 0d) {
      re.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
          q.post(new Runnable() {
            @Override
            public void run() {
              for (TelnetResponseReader r : connections) {
                r.empty();
              }
            }
          });
        }
      }, 0, (long) (callWithEmptyTime * 1000d), TimeUnit.MILLISECONDS);
    }

    q.post(new Runnable() {
      @Override
      public void run() {
        ByteBufferAllocator allocator = new OnceByteBufferAllocator();
        Ready ready = readyFactory.create(q, allocator);
        ready.connect(a, new ReadyConnection() {
          private TelnetResponseReader reader = null;
          @Override
          public void handle(Address address, ByteBuffer buffer) {
            reader.handle(address, buffer);
          }
         
          @Override
          public void failed(IOException e) {
            if (shouldCloseQueue) {
              re.shutdown();
              q.close();
            }
            connections.remove(reader);
            clientHandler.failed(e);
          }
         
          @Override
          public void connected(CloseableByteBufferHandler write) {
            reader = new TelnetResponseReader(clientHandler, write);
            connections.add(reader);
            clientHandler.launched(new TelnetClientHandler.Callback() {
              @Override
              public void close() {
                connections.remove(reader);
                reader.close();
                if (shouldCloseQueue) {
                  re.shutdown();
                  q.close();
                }
              }
             
              @Override
              public void send(String line) {
                reader.send(line);
              }
            });
          }
         
          @Override
          public void close() {
            if (shouldCloseQueue) {
              re.shutdown();
              q.close();
            }
            connections.remove(reader);
            reader.close();
          }
        });
View Full Code Here

    this.readyFactory = readyFactory;
    return this;
  }
 
  public void connect(FtpClientHandler clientHandler) {
    Queue q;
    boolean shouldCloseQueue;
    if (queue == null) {
      try {
        q = new Queue();
      } catch (IOException e) {
        clientHandler.failed(e);
        return;
      }
      shouldCloseQueue = true;
    } else {
      q = queue;
      shouldCloseQueue = false;
    }

    final Address a;
    if (host != null) {
      if (port < 0) {
        a = new Address(host, address.getPort());
      } else {
        a = new Address(host, port);
      }
    } else {
      a = address;
    }
   
    q.post(new Runnable() {
      @Override
      public void run() {
        ByteBufferAllocator allocator = new OnceByteBufferAllocator();
        Ready ready = readyFactory.create(q, allocator);
        ready.connect(a, new ReadyConnection() {
          private FtpResponseReader reader = null;
          @Override
          public void handle(Address address, ByteBuffer buffer) {
            reader.handle(address, buffer);
          }
         
          @Override
          public void failed(IOException e) {
            if (shouldCloseQueue) {
              q.close();
            }
            clientHandler.failed(e);
          }
         
          @Override
          public void connected(CloseableByteBufferHandler write) {
            reader = new FtpResponseReader(q, allocator, login, password, clientHandler, write);
            clientHandler.launched(new FtpClientHandler.Callback() {
              @Override
              public void close() {
                reader.close();
                if (shouldCloseQueue) {
                  q.close();
                }
              }
              @Override
              public void list(String path, ListCallback callback) {
                reader.list(path, callback);
              }
              @Override
              public void download(String path, DownloadCallback handler) {
                reader.download(path, handler);
              }
            });
          }
         
          @Override
          public void close() {
            if (shouldCloseQueue) {
              q.close();
            }
            reader.close();
          }
        });
      }
View Full Code Here

      }
    }
  }

  public void start() throws IOException {
    Queue queue = new Queue();
    Executors.newSingleThreadExecutor().execute(new Runnable() {
      @Override
      public void run() {
        while (true) {
          try (ServerSocket ss = new ServerSocket(port)) {
View Full Code Here

    this.readyFactory = readyFactory;
    return this;
  }
 
  public void connect(PingClientHandler clientHandler) {
    Queue q;
    ScheduledExecutorService re;
    boolean shouldCloseQueue;
   
    ReadyFactory rf;
    InternalPingServerReadyFactory readyFactoryToClose;
    if (readyFactory == null) {
      readyFactoryToClose = new InternalPingServerReadyFactory();
      rf = readyFactoryToClose;
    } else {
      rf = readyFactory;
      readyFactoryToClose = null;
    }
   
    if (queue == null) {
      try {
        q = new Queue();
      } catch (IOException e) {
        clientHandler.failed(e);
        return;
      }
      re = Executors.newSingleThreadScheduledExecutor();
      shouldCloseQueue = true;
    } else {
      q = queue;
      re = repeatExecutor;
      shouldCloseQueue = false;
    }

    final Address a;
    if (host != null) {
      if (port < 0) {
        a = new Address(host, address.getPort());
      } else {
        a = new Address(host, port);
      }
    } else {
      a = address;
    }
   
    final Set<InstanceMapper> instanceMappers = new HashSet<>();
    re.scheduleAtFixedRate(new Runnable() {
      @Override
      public void run() {
        q.post(new Runnable() {
          @Override
          public void run() {
            Date now = new Date();
            for (InstanceMapper i : instanceMappers) {
              i.repeat(now, minTimeToRepeat, timeoutFromBeginning);
            }
           
            Iterator<InstanceMapper> ii = instanceMappers.iterator();
            while (ii.hasNext()) {
              InstanceMapper i = ii.next();
              if (i.instances.isEmpty()) {
                ii.remove();
              }
            }
          }
        });
      }
    }, 0, (long) (repeatTime * 1000d), TimeUnit.MILLISECONDS);

    q.post(new Runnable() {
      @Override
      public void run() {
        ByteBufferAllocator allocator = new OnceByteBufferAllocator();
        Ready ready = rf.create(q, allocator);
       
        ready.connect(a, new ReadyConnection() {
          private final InstanceMapper instanceMapper = new InstanceMapper();

          @Override
          public void handle(Address address, ByteBuffer buffer) {
            ByteBuffer bb = buffer.duplicate();

            int version = buffer.get() & 0xFF;
            if (version != 1) {
              LOGGER.warn("Invalid version: {}", version);
              return;
            }
            int messageType = buffer.get() & 0xFF;
            if (messageType != 2) {
              LOGGER.warn("Invalid message type: {}", messageType);
              return;
            }
            int ipVersion = buffer.get() & 0xFF;
            int crcPos = buffer.position();
            short crc = buffer.getShort();
            if (CrcUtils.crc16(bb, crcPos) != crc) {
              LOGGER.warn("Invalid crc");
              return;
            }
            byte[] ip = new byte[(ipVersion == 4) ? 4 : 16];
            buffer.get(ip);
            int numberOfRetries = buffer.getInt();
            int[] statuses = new int[numberOfRetries];
            double[] times = new double[numberOfRetries];
            for (int i = 0; i < numberOfRetries; i++) {
              int replyTime = buffer.getInt();
              if (replyTime < 0) {
                // Error
                statuses[i] = -replyTime;
                times[i] = Double.NaN;
              } else {
                times[i] = replyTime / 1000d;
                statuses[i] = PingClientHandler.VALID_STATUS;
              }
            }

            instanceMapper.handle(new PingableAddress(ip), statuses, times);
          }
         
          @Override
          public void failed(IOException e) {
            if (shouldCloseQueue) {
              re.shutdown();
              q.close();
            }
            if (readyFactoryToClose != null) {
              readyFactoryToClose.close();
            }
            if (instanceMappers.remove(instanceMapper)) {
              clientHandler.failed(e);
            }
          }
         
          @Override
          public void connected(CloseableByteBufferHandler write) {
            instanceMappers.add(instanceMapper);
           
            PingWriter w = new PingWriter(write);
           
            clientHandler.launched(new PingClientHandler.Callback() {
              @Override
              public void close() {
                if (instanceMappers.remove(instanceMapper)) {
                  instanceMapper.closedByUser();
                }
               
                write.close();

                if (shouldCloseQueue) {
                  re.shutdown();
                  q.close();
                }
                if (readyFactoryToClose != null) {
                  readyFactoryToClose.close();
                }
              }
              @Override
              public void ping(PingableAddress address, int numberOfRetries, double timeBetweenRetries, double retryTimeout, PingCallback callback) {
                Instance i = new Instance(callback, w, address, numberOfRetries, timeBetweenRetries, retryTimeout);
                instanceMapper.map(i);
                w.ping(address, numberOfRetries, timeBetweenRetries, retryTimeout);
              }
            });
          }
         
          @Override
          public void close() {
            if (shouldCloseQueue) {
              re.shutdown();
              q.close();
            }
            if (readyFactoryToClose != null) {
              readyFactoryToClose.close();
            }
            if (instanceMappers.remove(instanceMapper)) {
View Full Code Here

TOP

Related Classes of com.davfx.ninio.common.Queue

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.