Exemplo n.º 1
0
  @Override
  @SuppressWarnings("unchecked")
  public void run() {
    byte[] buffer = new byte[1 << 16];
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

    try {
      while (true) {
        transport.receive(packet);

        RawPacket rawPacket =
            RawPacket.tryParse(Arrays.copyOfRange(packet.getData(), 0, packet.getLength()));

        if (rawPacket == null
            || rawPacket.getSourceIp().equals(socket.getIp())
            || handledPackets.contains(rawPacket.hashCode())) {
          continue;
        }

        System.out.println("received " + rawPacket);

        Iterable<PacketListener> listenersCopy;

        synchronized (listeners) {
          listenersCopy = (Iterable<PacketListener>) listeners.clone();
        }

        for (PacketListener listener : listenersCopy) {
          listener.onPacketReceived(rawPacket);
        }

        handledPackets.add(rawPacket.hashCode());
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
Exemplo n.º 2
0
  @Override
  protected void channelRead0(io.netty.channel.ChannelHandlerContext ctx, PacketsMessage message)
      throws Exception {
    ByteBuf content = message.getContent();
    MainBaseClient client = message.getClient();

    if (log.isTraceEnabled()) {
      log.trace(
          "In message: {} sessionId: {}",
          content.toString(CharsetUtil.UTF_8),
          client.getSessionId());
    }
    while (content.isReadable()) {
      try {
        Packet packet = decoder.decodePackets(content, client.getSessionId());
        Namespace ns = namespacesHub.get(packet.getEndpoint());
        if (ns == null) {
          log.debug(
              "Can't find namespace for endpoint: {}, sessionId: {} probably it was removed.",
              packet.getEndpoint(),
              client.getSessionId());
          return;
        }

        if (packet.getType() == PacketType.CONNECT) {
          client.addChildClient(ns);
        }

        NamespaceClient nClient = (NamespaceClient) client.getChildClient(ns);
        if (nClient == null) {
          log.debug(
              "Can't find namespace client in namespace: {}, sessionId: {} probably it was disconnected.",
              ns.getName(),
              client.getSessionId());
          return;
        }
        packetListener.onPacket(packet, nClient);
      } catch (Exception ex) {
        String c = content.toString(CharsetUtil.UTF_8);
        log.error(
            "Error during data processing. Client sessionId: "
                + client.getSessionId()
                + ", data: "
                + c,
            ex);
        return;
      }
    }
  }
Exemplo n.º 3
0
 /**
  * Notify and process the packet listener if the filter matches the packet.
  *
  * @param packet the packet which was sent or received.
  */
 public void notifyListener(Packet packet) {
   if (packetFilter == null || packetFilter.accept(packet)) {
     packetListener.processPacket(packet);
   }
 }
 private void notifyPacketReceived(CrtpPacket inPacket) {
   checkForInitialPacketCallback(inPacket);
   for (PacketListener pl : this.mPacketListeners) {
     pl.packetReceived(inPacket);
   }
 }