diff --git a/docs/index.html b/docs/index.html index ea8117c..4f572e6 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,5 +11,11 @@ More content coming soon!

+

Javadoc

+ + \ No newline at end of file diff --git a/docs/javadoc/core/allclasses-index.html b/docs/javadoc/core/allclasses-index.html new file mode 100644 index 0000000..1631f01 --- /dev/null +++ b/docs/javadoc/core/allclasses-index.html @@ -0,0 +1,202 @@ + + + + +All Classes and Interfaces (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
+
+
+
Class
+
Description
+ +
+
A more complex output stream which redefines certain methods for convenience + with method chaining.
+
+ +
+
This message contains information about a chat message that a user sent.
+
+ +
+
A message which clients can send to the server to request some messages from + the server's history of all sent messages from a particular source.
+
+ +
+
The response that a server sends to a ChatHistoryRequest.
+
+ +
+
This message is sent by clients to log into a server that they have already + registered with, but don't have a valid session token for.
+
+ +
+
The data that new users should send to a server in order to register in that + server.
+
+ +
+
This message is sent by the client to log into a server using a session token + instead of a username/password combination.
+
+ +
+
This message is sent by clients when they indicate that they would like to + create a new thread in their current channel.
+
+ +
+
Utility class for handling the establishment of encrypted communication.
+
+ +
+
Error message which can be sent between either the server or client to + indicate an unsavory situation.
+
+ +
+
The error level gives an indication as to the severity of the error.
+
+ +
+
An extended output stream which contains additional methods for reading more + complex types that are used by the Concord system.
+
+ +
+
This message is sent as the first message from both the server and the client + to establish an end-to-end encryption via a key exchange.
+
+ +
+
Represents any message which can be sent over the network.
+
+ +
 
+ +
+
Record containing the components needed to read and write a given message.
+
+ +
+
Utility class which provides method for serializing and deserializing complex + data types.
+
+ +
 
+ +
+
A message that's sent to a client when they've been moved to another channel.
+
+ +
+
Simple generic pair of two objects.
+
+ +
+
A response from the server which indicates the current status of the client's + registration request.
+
+ +
 
+ +
+
This class is responsible for reading and writing messages from streams.
+
+ +
+
Metadata is sent by the server to clients to inform them of the structure of + the server.
+
+ +
+
Metadata about a top-level channel in the server which is visible and + joinable for a user.
+
+ +
+
This message is sent from the server to the client whenever a change happens + which requires the server to notify clients about a change of the list of + global users.
+
+ +
+
This message is sent from the server to the client after the server accepts + the client's identification and registers the client in the server.
+
+ +
+
Simple generic triple of objects.
+
+ +
+
Standard set of user data that is used mainly as a component of other more + complex messages.
+
+
+
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/allpackages-index.html b/docs/javadoc/core/allpackages-index.html new file mode 100644 index 0000000..5c46891 --- /dev/null +++ b/docs/javadoc/core/allpackages-index.html @@ -0,0 +1,95 @@ + + + + +All Packages (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+ +
+
Messages pertaining to channel interaction and updates.
+
+ +
+
Messages pertaining to chat messages and other auxiliary messages regarding + the management of chat information.
+
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+ +
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/module-summary.html b/docs/javadoc/core/concord_core/module-summary.html new file mode 100644 index 0000000..679c96f --- /dev/null +++ b/docs/javadoc/core/concord_core/module-summary.html @@ -0,0 +1,162 @@ + + + + +concord_core (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Module concord_core

+
+
+
module concord_core
+
+ +
The core components that are used by both the Concord server and the default + client implementation. Includes record-based message serialization, and some + utilities for message passing. +

+ This core module defines the message protocol that clients must use to + communicate with any server. +

+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Encryption.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Encryption.html new file mode 100644 index 0000000..c5400af --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Encryption.html @@ -0,0 +1,215 @@ + + + + +Encryption (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Class Encryption

+
+
java.lang.Object +
nl.andrewl.concord_core.msg.Encryption
+
+
+
+
public class Encryption +extends Object
+
Utility class for handling the establishment of encrypted communication.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Encryption

      +
      public Encryption()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      upgrade

      + +
      Upgrades the given input and output streams to a pair of cipher input and + output streams. This upgrade follows the following steps: +
        +
      1. Generate an elliptic curve key pair, and send the public key to the output stream.
      2. +
      3. Read the public key that the other person has sent, from the input stream.
      4. +
      5. Compute a shared private key using the ECDH key exchange, with our private key and their public key.
      6. +
      7. Create the cipher streams from the shared private key.
      8. +
      +
      +
      Parameters:
      +
      in - The unencrypted input stream.
      +
      out - The unencrypted output stream.
      +
      serializer - The message serializer that is used to read and write + messages according to the standard Concord protocol.
      +
      Returns:
      +
      The pair of cipher streams, which can be used to send encrypted + messages.
      +
      Throws:
      +
      GeneralSecurityException - If an error occurs while generating keys + or preparing the cipher streams.
      +
      IOException - If an error occurs while reading or writing data on + the streams.
      +
      +
      +
    • +
    • +
      +

      computeSecretKey

      +
      private static byte[] computeSecretKey(byte[] sharedSecret, + byte[] pk1, + byte[] pk2) + throws NoSuchAlgorithmException
      +
      +
      Throws:
      +
      NoSuchAlgorithmException
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Message.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Message.html new file mode 100644 index 0000000..d646c9d --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Message.html @@ -0,0 +1,167 @@ + + + + +Message (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Interface Message

+
+
+
+
All Known Implementing Classes:
+
Chat, ChatHistoryRequest, ChatHistoryResponse, ClientLogin, ClientRegistration, ClientSessionResume, CreateThread, Error, KeyData, MoveToChannel, RegistrationStatus, ServerMetaData, ServerMetaData.ChannelData, ServerUsers, ServerWelcome, UserData
+
+
+
public interface Message
+
Represents any message which can be sent over the network. +

+ All messages consist of a single byte type identifier, followed by a + payload whose structure depends on the message. +

+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    default int
    + +
    +
    Convenience method to determine the size of this message in bytes.
    +
    +
    default <T extends Message>
    MessageTypeSerializer<T>
    + +
    +
    Convenience method to get the serializer for this message's type, using + the static auto-generated set of serializers.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getTypeSerializer

      +
      default <T extends Message> +MessageTypeSerializer<T> getTypeSerializer()
      +
      Convenience method to get the serializer for this message's type, using + the static auto-generated set of serializers.
      +
      +
      Type Parameters:
      +
      T - The message type.
      +
      Returns:
      +
      The serializer to use to read and write messages of this type.
      +
      +
      +
    • +
    • +
      +

      byteSize

      +
      default int byteSize()
      +
      Convenience method to determine the size of this message in bytes.
      +
      +
      Returns:
      +
      The size of this message, in bytes.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageReader.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageReader.html new file mode 100644 index 0000000..b0dcb68 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageReader.html @@ -0,0 +1,150 @@ + + + + +MessageReader (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Interface MessageReader<T extends Message>

+
+
+
+
Functional Interface:
+
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
+
+
+
@FunctionalInterface +public interface MessageReader<T extends Message>
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Reads all of this message's properties from the given input stream.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      read

      + +
      Reads all of this message's properties from the given input stream. +

      + The single byte type identifier has already been read. +

      +
      +
      Parameters:
      +
      in - The input stream to read from.
      +
      Returns:
      +
      The message that was read.
      +
      Throws:
      +
      IOException - If an error occurs while reading.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageTypeSerializer.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageTypeSerializer.html new file mode 100644 index 0000000..df747d0 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageTypeSerializer.html @@ -0,0 +1,499 @@ + + + + +MessageTypeSerializer (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class MessageTypeSerializer<T extends Message>

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.MessageTypeSerializer<T>
+
+
+
+
+
Type Parameters:
+
T - The type of message.
+
Record Components:
+
messageClass - The class of the message.
+
byteSizeFunction - A function that computes the byte size of the message.
+
reader - A reader that can read messages from an input stream.
+
writer - A writer that write messages from an input stream.
+
+
+
public record MessageTypeSerializer<T extends Message>(Class<T extends Message> messageClass, Function<T extends Message,Integer> byteSizeFunction, MessageReader<T extends Message> reader, MessageWriter<T extends Message> writer) +extends Record
+
Record containing the components needed to read and write a given message. +

+ Also contains methods for automatically generating message type + implementations for standard record-based messages. +

+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    + +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MessageTypeSerializer

      +
      public MessageTypeSerializer(Class<T> messageClass, + Function<T,Integer> byteSizeFunction, + MessageReader<T> reader, + MessageWriter<T> writer)
      +
      Creates an instance of a MessageTypeSerializer record class.
      +
      +
      Parameters:
      +
      messageClass - the value for the messageClass record component
      +
      byteSizeFunction - the value for the byteSizeFunction record component
      +
      reader - the value for the reader record component
      +
      writer - the value for the writer record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      get

      +
      public static <T extends Message> +MessageTypeSerializer<T> get(Class<T> messageClass)
      +
      Gets the MessageTypeSerializer instance for a given message class, and + generates a new implementation if none exists yet.
      +
      +
      Type Parameters:
      +
      T - The type of the message.
      +
      Parameters:
      +
      messageClass - The class of the message to get a type for.
      +
      Returns:
      +
      The message type.
      +
      +
      +
    • +
    • +
      +

      generateForRecord

      +
      public static <T extends Message> +MessageTypeSerializer<T> generateForRecord(Class<T> messageTypeClass)
      +
      Generates a message type instance for a given class, using reflection to + introspect the fields of the message. +

      + Note that this only works for record-based messages. +

      +
      +
      Type Parameters:
      +
      T - The type of the message.
      +
      Parameters:
      +
      messageTypeClass - The class of the message type.
      +
      Returns:
      +
      A message type instance.
      +
      +
      +
    • +
    • +
      +

      generateByteSizeFunction

      +
      private static <T extends Message> +Function<T,Integer> generateByteSizeFunction(RecordComponent[] components)
      +
      Generates a function implementation that counts the byte size of a + message based on the message's record component types.
      +
      +
      Type Parameters:
      +
      T - The message type.
      +
      Parameters:
      +
      components - The list of components that make up the message.
      +
      Returns:
      +
      A function that computes the byte size of a message of the given + type.
      +
      +
      +
    • +
    • +
      +

      generateReader

      +
      private static <T extends Message> MessageReader<T> generateReader(Constructor<T> constructor)
      +
      Generates a message reader for the given message constructor method. It + will try to read objects from the input stream according to the + parameters of the canonical constructor of a message record.
      +
      +
      Type Parameters:
      +
      T - The message type.
      +
      Parameters:
      +
      constructor - The canonical constructor of the message record.
      +
      Returns:
      +
      A message reader for the given type.
      +
      +
      +
    • +
    • +
      +

      generateWriter

      +
      private static <T extends Message> MessageWriter<T> generateWriter(RecordComponent[] components)
      +
      Generates a message writer for the given message record components.
      +
      +
      Type Parameters:
      +
      T - The type of message.
      +
      Parameters:
      +
      components - The record components to write.
      +
      Returns:
      +
      The message writer for the given type.
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      messageClass

      +
      public Class<T> messageClass()
      +
      Returns the value of the messageClass record component.
      +
      +
      Returns:
      +
      the value of the messageClass record component
      +
      +
      +
    • +
    • +
      +

      byteSizeFunction

      +
      public Function<T,Integer> byteSizeFunction()
      +
      Returns the value of the byteSizeFunction record component.
      +
      +
      Returns:
      +
      the value of the byteSizeFunction record component
      +
      +
      +
    • +
    • +
      +

      reader

      +
      public MessageReader<T> reader()
      +
      Returns the value of the reader record component.
      +
      +
      Returns:
      +
      the value of the reader record component
      +
      +
      +
    • +
    • +
      +

      writer

      +
      public MessageWriter<T> writer()
      +
      Returns the value of the writer record component.
      +
      +
      Returns:
      +
      the value of the writer record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageUtils.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageUtils.html new file mode 100644 index 0000000..8ce442a --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageUtils.html @@ -0,0 +1,287 @@ + + + + +MessageUtils (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Class MessageUtils

+
+
java.lang.Object +
nl.andrewl.concord_core.msg.MessageUtils
+
+
+
+
public class MessageUtils +extends Object
+
Utility class which provides method for serializing and deserializing complex + data types.
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      UUID_BYTES

      +
      public static final int UUID_BYTES
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    • +
      +

      ENUM_BYTES

      +
      public static final int ENUM_BYTES
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MessageUtils

      +
      public MessageUtils()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getByteSize

      +
      public static int getByteSize(String s)
      +
      Gets the number of bytes that the given string will occupy when it is + serialized.
      +
      +
      Parameters:
      +
      s - The string. This may be null.
      +
      Returns:
      +
      The number of bytes used to serialize the string.
      +
      +
      +
    • +
    • +
      +

      getByteSize

      +
      public static int getByteSize(String... strings)
      +
      Gets the number of bytes that all the given strings will occupy when + serialized with a length-prefix encoding.
      +
      +
      Parameters:
      +
      strings - The set of strings.
      +
      Returns:
      +
      The total byte size.
      +
      +
      +
    • +
    • +
      +

      getByteSize

      +
      public static int getByteSize(Message msg)
      +
      +
    • +
    • +
      +

      getByteSize

      +
      public static <T extends Message> int getByteSize(T[] items)
      +
      +
    • +
    • +
      +

      getByteSize

      +
      public static int getByteSize(Object o)
      +
      +
    • +
    • +
      +

      getByteSize

      +
      public static int getByteSize(Object... objects)
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageWriter.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageWriter.html new file mode 100644 index 0000000..8855113 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/MessageWriter.html @@ -0,0 +1,148 @@ + + + + +MessageWriter (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Interface MessageWriter<T extends Message>

+
+
+
+
Functional Interface:
+
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
+
+
+
@FunctionalInterface +public interface MessageWriter<T extends Message>
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    + +
    +
    Writes this message to the given output stream.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      write

      +
      void write(T msg, + ChainedDataOutputStream out) + throws IOException
      +
      Writes this message to the given output stream.
      +
      +
      Parameters:
      +
      msg - The message to write.
      +
      out - The output stream to write to.
      +
      Throws:
      +
      IOException - If an error occurs while writing.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Serializer.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Serializer.html new file mode 100644 index 0000000..bee7215 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/Serializer.html @@ -0,0 +1,281 @@ + + + + +Serializer (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Class Serializer

+
+
java.lang.Object +
nl.andrewl.concord_core.msg.Serializer
+
+
+
+
public class Serializer +extends Object
+
This class is responsible for reading and writing messages from streams. It + also defines the set of supported message types, and their associated byte + identifiers, via the registerType(int, Class) method.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final Map<MessageTypeSerializer<?>,Byte>
    + +
    +
    An inverse of messageTypes which is used to look up a + message's byte value when you know the class of the message.
    +
    +
    private final Map<Byte,MessageTypeSerializer<?>>
    + +
    +
    The mapping which defines each supported message type and the byte value + used to identify it when reading and writing messages.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Constructs a new serializer instance, with a standard set of supported + message types.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Reads a message from the given input stream and returns it, or throws an + exception if an error occurred while reading from the stream.
    +
    +
    private <T extends Message>
    void
    +
    registerType(int id, + Class<T> messageClass)
    +
    +
    Helper method which registers a message type to be supported by the + serializer, by adding it to the normal and inverse mappings.
    +
    +
    <T extends Message>
    void
    + +
    +
    Writes a message to the given output stream.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      messageTypes

      +
      private final Map<Byte,MessageTypeSerializer<?>> messageTypes
      +
      The mapping which defines each supported message type and the byte value + used to identify it when reading and writing messages.
      +
      +
    • +
    • +
      +

      inverseMessageTypes

      +
      private final Map<MessageTypeSerializer<?>,Byte> inverseMessageTypes
      +
      An inverse of messageTypes which is used to look up a + message's byte value when you know the class of the message.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Serializer

      +
      public Serializer()
      +
      Constructs a new serializer instance, with a standard set of supported + message types.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      registerType

      +
      private <T extends Message> void registerType(int id, + Class<T> messageClass)
      +
      Helper method which registers a message type to be supported by the + serializer, by adding it to the normal and inverse mappings.
      +
      +
      Parameters:
      +
      id - The byte which will be used to identify messages of the given + class. The value should from 0 to 127.
      +
      messageClass - The type of message associated with the given id.
      +
      +
      +
    • +
    • +
      +

      readMessage

      +
      public Message readMessage(InputStream i) + throws IOException
      +
      Reads a message from the given input stream and returns it, or throws an + exception if an error occurred while reading from the stream.
      +
      +
      Parameters:
      +
      i - The input stream to read from.
      +
      Returns:
      +
      The message which was read.
      +
      Throws:
      +
      IOException - If an error occurs while reading, such as trying to + read an unsupported message type, or if a message object could not be + constructed for the incoming data.
      +
      +
      +
    • +
    • +
      +

      writeMessage

      +
      public <T extends Message> void writeMessage(Message msg, + OutputStream o) + throws IOException
      +
      Writes a message to the given output stream.
      +
      +
      Parameters:
      +
      msg - The message to write.
      +
      o - The output stream to write to.
      +
      Throws:
      +
      IOException - If an error occurs while writing, or if the message + to write is not supported by this serializer.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Encryption.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Encryption.html new file mode 100644 index 0000000..05f6d94 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Encryption.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_core.msg.Encryption (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
nl.andrewl.concord_core.msg.Encryption

+
+No usage of nl.andrewl.concord_core.msg.Encryption
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Message.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Message.html new file mode 100644 index 0000000..20cf32f --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Message.html @@ -0,0 +1,386 @@ + + + + +Uses of Interface nl.andrewl.concord_core.msg.Message (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
nl.andrewl.concord_core.msg.Message

+
+
Packages that use Message
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+ +
+
Messages pertaining to channel interaction and updates.
+
+ +
+
Messages pertaining to chat messages and other auxiliary messages regarding + the management of chat information.
+
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+ +
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageReader.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageReader.html new file mode 100644 index 0000000..066afff --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageReader.html @@ -0,0 +1,122 @@ + + + + +Uses of Interface nl.andrewl.concord_core.msg.MessageReader (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
nl.andrewl.concord_core.msg.MessageReader

+
+
Packages that use MessageReader
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageTypeSerializer.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageTypeSerializer.html new file mode 100644 index 0000000..f382503 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageTypeSerializer.html @@ -0,0 +1,145 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.MessageTypeSerializer (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.MessageTypeSerializer

+
+
Packages that use MessageTypeSerializer
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+ +
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageUtils.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageUtils.html new file mode 100644 index 0000000..07b9209 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageUtils.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_core.msg.MessageUtils (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
nl.andrewl.concord_core.msg.MessageUtils

+
+No usage of nl.andrewl.concord_core.msg.MessageUtils
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageWriter.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageWriter.html new file mode 100644 index 0000000..76a98de --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/MessageWriter.html @@ -0,0 +1,122 @@ + + + + +Uses of Interface nl.andrewl.concord_core.msg.MessageWriter (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
nl.andrewl.concord_core.msg.MessageWriter

+
+
Packages that use MessageWriter
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Serializer.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Serializer.html new file mode 100644 index 0000000..b8e84cb --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/class-use/Serializer.html @@ -0,0 +1,95 @@ + + + + +Uses of Class nl.andrewl.concord_core.msg.Serializer (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
nl.andrewl.concord_core.msg.Serializer

+
+
Packages that use Serializer
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-summary.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-summary.html new file mode 100644 index 0000000..4575d7b --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-summary.html @@ -0,0 +1,137 @@ + + + + +nl.andrewl.concord_core.msg (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+
Module concord_core
+

Package nl.andrewl.concord_core.msg

+
+
+
package nl.andrewl.concord_core.msg
+
+
Message components which are used by the server and the default client + implementation. Notably, the Serializer + within this package defines the set of supported message types, and provides + the highest-level interface to client-server communication.
+
+
+
    +
  • + +
  • +
  • +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    Utility class for handling the establishment of encrypted communication.
    +
    + +
    +
    Represents any message which can be sent over the network.
    +
    + +
     
    + +
    +
    Record containing the components needed to read and write a given message.
    +
    + +
    +
    Utility class which provides method for serializing and deserializing complex + data types.
    +
    + +
     
    + +
    +
    This class is responsible for reading and writing messages from streams.
    +
    +
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-tree.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-tree.html new file mode 100644 index 0000000..785e4e7 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-tree.html @@ -0,0 +1,91 @@ + + + + +nl.andrewl.concord_core.msg Class Hierarchy (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package nl.andrewl.concord_core.msg

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-use.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-use.html new file mode 100644 index 0000000..6c36761 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/package-use.html @@ -0,0 +1,193 @@ + + + + +Uses of Package nl.andrewl.concord_core.msg (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
nl.andrewl.concord_core.msg

+
+
Packages that use nl.andrewl.concord_core.msg
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+ +
+
Messages pertaining to channel interaction and updates.
+
+ +
+
Messages pertaining to chat messages and other auxiliary messages regarding + the management of chat information.
+
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+ +
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/Error.Level.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/Error.Level.html new file mode 100644 index 0000000..c439d5c --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/Error.Level.html @@ -0,0 +1,260 @@ + + + + +Error.Level (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Enum Class Error.Level

+
+
java.lang.Object +
java.lang.Enum<Error.Level> +
nl.andrewl.concord_core.msg.types.Error.Level
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<Error.Level>, Constable
+
+
+
Enclosing class:
+
Error
+
+
+
public static enum Error.Level +extends Enum<Error.Level>
+
The error level gives an indication as to the severity of the error. + Warnings indicate that a user has attempted to do something which they + shouldn't, or some scenario which is not ideal but recoverable from. + Errors indicate actual issues with the software which should be addressed.
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      WARNING

      +
      public static final Error.Level WARNING
      +
      +
    • +
    • +
      +

      ERROR

      +
      public static final Error.Level ERROR
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level

      +
      private Level()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Error.Level[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Error.Level valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/Error.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/Error.html new file mode 100644 index 0000000..3d30a22 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/Error.html @@ -0,0 +1,367 @@ + + + + +Error (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class Error

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.Error
+
+
+
+
+
Record Components:
+
level - The severity level of the error.
+
message - A message indicating what went wrong.
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record Error(Error.Level level, String message) +extends Record +implements Message
+
Error message which can be sent between either the server or client to + indicate an unsavory situation.
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    Nested Classes
    +
    +
    Modifier and Type
    +
    Class
    +
    Description
    +
    static enum 
    + +
    +
    The error level gives an indication as to the severity of the error.
    +
    +
    +
    +
  • + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final Error.Level
    + +
    +
    The field for the level record component.
    +
    +
    private final String
    + +
    +
    The field for the message record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    Error(Error.Level level, + String message)
    +
    +
    Creates an instance of a Error record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    static Error
    +
    error(String message)
    +
    +
    Creates an error message.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the level record component.
    +
    + + +
    +
    Returns the value of the message record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    static Error
    +
    warning(String message)
    +
    +
    Creates a warning message.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      level

      +
      private final Error.Level level
      +
      The field for the level record component.
      +
      +
    • +
    • +
      +

      message

      +
      private final String message
      +
      The field for the message record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Error

      +
      public Error(Error.Level level, + String message)
      +
      Creates an instance of a Error record class.
      +
      +
      Parameters:
      +
      level - the value for the level record component
      +
      message - the value for the message record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      warning

      +
      public static Error warning(String message)
      +
      Creates a warning message.
      +
      +
      Parameters:
      +
      message - The message text.
      +
      Returns:
      +
      A warning-level error message.
      +
      +
      +
    • +
    • +
      +

      error

      +
      public static Error error(String message)
      +
      Creates an error message.
      +
      +
      Parameters:
      +
      message - The message text.
      +
      Returns:
      +
      An error-level error message.
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      level

      +
      public Error.Level level()
      +
      Returns the value of the level record component.
      +
      +
      Returns:
      +
      the value of the level record component
      +
      +
      +
    • +
    • +
      +

      message

      +
      public String message()
      +
      Returns the value of the message record component.
      +
      +
      Returns:
      +
      the value of the message record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerMetaData.ChannelData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerMetaData.ChannelData.html new file mode 100644 index 0000000..339e25a --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerMetaData.ChannelData.html @@ -0,0 +1,313 @@ + + + + +ServerMetaData.ChannelData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ServerMetaData.ChannelData

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
Enclosing class:
+
ServerMetaData
+
+
+
public static record ServerMetaData.ChannelData(UUID id, String name) +extends Record +implements Message
+
Metadata about a top-level channel in the server which is visible and + joinable for a user.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final UUID
    + +
    +
    The field for the id record component.
    +
    +
    private final String
    + +
    +
    The field for the name record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    ChannelData(UUID id, + String name)
    +
    +
    Creates an instance of a ChannelData record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + +
    id()
    +
    +
    Returns the value of the id record component.
    +
    + + +
    +
    Returns the value of the name record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      id

      +
      private final UUID id
      +
      The field for the id record component.
      +
      +
    • +
    • +
      +

      name

      +
      private final String name
      +
      The field for the name record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ChannelData

      +
      public ChannelData(UUID id, + String name)
      +
      Creates an instance of a ChannelData record class.
      +
      +
      Parameters:
      +
      id - the value for the id record component
      +
      name - the value for the name record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      id

      +
      public UUID id()
      +
      Returns the value of the id record component.
      +
      +
      Returns:
      +
      the value of the id record component
      +
      +
      +
    • +
    • +
      +

      name

      +
      public String name()
      +
      Returns the value of the name record component.
      +
      +
      Returns:
      +
      the value of the name record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerMetaData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerMetaData.html new file mode 100644 index 0000000..96ab1a3 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerMetaData.html @@ -0,0 +1,328 @@ + + + + +ServerMetaData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ServerMetaData

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ServerMetaData(String name, ServerMetaData.ChannelData[] channels) +extends Record +implements Message
+
Metadata is sent by the server to clients to inform them of the structure of + the server. This includes basic information about the server's own properties + as well as information about all top-level channels.
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    Nested Classes
    +
    +
    Modifier and Type
    +
    Class
    +
    Description
    +
    static final record 
    + +
    +
    Metadata about a top-level channel in the server which is visible and + joinable for a user.
    +
    +
    +
    +
  • + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    + + +
    +
    The field for the channels record component.
    +
    +
    private final String
    + +
    +
    The field for the name record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Creates an instance of a ServerMetaData record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Returns the value of the channels record component.
    +
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the name record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      name

      +
      private final String name
      +
      The field for the name record component.
      +
      +
    • +
    • +
      +

      channels

      +
      private final ServerMetaData.ChannelData[] channels
      +
      The field for the channels record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ServerMetaData

      +
      public ServerMetaData(String name, + ServerMetaData.ChannelData[] channels)
      +
      Creates an instance of a ServerMetaData record class.
      +
      +
      Parameters:
      +
      name - the value for the name record component
      +
      channels - the value for the channels record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      name

      +
      public String name()
      +
      Returns the value of the name record component.
      +
      +
      Returns:
      +
      the value of the name record component
      +
      +
      +
    • +
    • +
      +

      channels

      +
      public ServerMetaData.ChannelData[] channels()
      +
      Returns the value of the channels record component.
      +
      +
      Returns:
      +
      the value of the channels record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerUsers.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerUsers.html new file mode 100644 index 0000000..646c582 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/ServerUsers.html @@ -0,0 +1,279 @@ + + + + +ServerUsers (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ServerUsers

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.ServerUsers
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ServerUsers(UserData[] users) +extends Record +implements Message
+
This message is sent from the server to the client whenever a change happens + which requires the server to notify clients about a change of the list of + global users.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final UserData[]
    + +
    +
    The field for the users record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Creates an instance of a ServerUsers record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    + + +
    +
    Returns the value of the users record component.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      users

      +
      private final UserData[] users
      +
      The field for the users record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ServerUsers

      +
      public ServerUsers(UserData[] users)
      +
      Creates an instance of a ServerUsers record class.
      +
      +
      Parameters:
      +
      users - the value for the users record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      users

      +
      public UserData[] users()
      +
      Returns the value of the users record component.
      +
      +
      Returns:
      +
      the value of the users record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/UserData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/UserData.html new file mode 100644 index 0000000..434fe70 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/UserData.html @@ -0,0 +1,309 @@ + + + + +UserData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class UserData

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.UserData
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record UserData(UUID id, String name) +extends Record +implements Message
+
Standard set of user data that is used mainly as a component of other more + complex messages.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final UUID
    + +
    +
    The field for the id record component.
    +
    +
    private final String
    + +
    +
    The field for the name record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    UserData(UUID id, + String name)
    +
    +
    Creates an instance of a UserData record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + +
    id()
    +
    +
    Returns the value of the id record component.
    +
    + + +
    +
    Returns the value of the name record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      id

      +
      private final UUID id
      +
      The field for the id record component.
      +
      +
    • +
    • +
      +

      name

      +
      private final String name
      +
      The field for the name record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      UserData

      +
      public UserData(UUID id, + String name)
      +
      Creates an instance of a UserData record class.
      +
      +
      Parameters:
      +
      id - the value for the id record component
      +
      name - the value for the name record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      id

      +
      public UUID id()
      +
      Returns the value of the id record component.
      +
      +
      Returns:
      +
      the value of the id record component
      +
      +
      +
    • +
    • +
      +

      name

      +
      public String name()
      +
      Returns the value of the name record component.
      +
      +
      Returns:
      +
      the value of the name record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/CreateThread.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/CreateThread.html new file mode 100644 index 0000000..330a821 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/CreateThread.html @@ -0,0 +1,320 @@ + + + + +CreateThread (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class CreateThread

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
+
+
+
Record Components:
+
messageId - The id of the message that a thread will be/is attached to.
+
title - The title of the thread. This may be null.
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record CreateThread(UUID messageId, String title) +extends Record +implements Message
+
This message is sent by clients when they indicate that they would like to + create a new thread in their current channel. +

+ Conversely, this message is also sent by the server when a thread has + been created by someone, and all clients need to be notified so that they + can properly display to the user that a message has been turned into a + thread. +

+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final UUID
    + +
    +
    The field for the messageId record component.
    +
    +
    private final String
    + +
    +
    The field for the title record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    CreateThread(UUID messageId, + String title)
    +
    +
    Creates an instance of a CreateThread record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the messageId record component.
    +
    + + +
    +
    Returns the value of the title record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      messageId

      +
      private final UUID messageId
      +
      The field for the messageId record component.
      +
      +
    • +
    • +
      +

      title

      +
      private final String title
      +
      The field for the title record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      CreateThread

      +
      public CreateThread(UUID messageId, + String title)
      +
      Creates an instance of a CreateThread record class.
      +
      +
      Parameters:
      +
      messageId - the value for the messageId record component
      +
      title - the value for the title record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      messageId

      +
      public UUID messageId()
      +
      Returns the value of the messageId record component.
      +
      +
      Returns:
      +
      the value of the messageId record component
      +
      +
      +
    • +
    • +
      +

      title

      +
      public String title()
      +
      Returns the value of the title record component.
      +
      +
      Returns:
      +
      the value of the title record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/MoveToChannel.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/MoveToChannel.html new file mode 100644 index 0000000..38540ef --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/MoveToChannel.html @@ -0,0 +1,337 @@ + + + + +MoveToChannel (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class MoveToChannel

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
+
+
+
Record Components:
+
id - The id of the channel that the client is requesting or being moved + to, or the id of another client that the user wishes to begin + private messaging with.
+
channelName - The name of the channel that the client is moved to. This + is null in cases where the client is requesting to move to + a channel, and is only provided by the server when it + moves a client.
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record MoveToChannel(UUID id, String channelName) +extends Record +implements Message
+
A message that's sent to a client when they've been moved to another channel. + This indicates to the client that they should perform the necessary requests + to update their view to indicate that they're now in a different channel. +

+ Conversely, a client can send this request to the server to indicate that + they would like to switch to the specified channel. +

+

+ Clients can also send this message and provide the id of another client + to request that they enter a private message channel with the referenced + client. +

+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final String
    + +
    +
    The field for the channelName record component.
    +
    +
    private final UUID
    + +
    +
    The field for the id record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
     
    +
    MoveToChannel(UUID id, + String channelName)
    +
    +
    Creates an instance of a MoveToChannel record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Returns the value of the channelName record component.
    +
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + +
    id()
    +
    +
    Returns the value of the id record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      id

      +
      private final UUID id
      +
      The field for the id record component.
      +
      +
    • +
    • +
      +

      channelName

      +
      private final String channelName
      +
      The field for the channelName record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MoveToChannel

      +
      public MoveToChannel(UUID id)
      +
      +
    • +
    • +
      +

      MoveToChannel

      +
      public MoveToChannel(UUID id, + String channelName)
      +
      Creates an instance of a MoveToChannel record class.
      +
      +
      Parameters:
      +
      id - the value for the id record component
      +
      channelName - the value for the channelName record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      id

      +
      public UUID id()
      +
      Returns the value of the id record component.
      +
      +
      Returns:
      +
      the value of the id record component
      +
      +
      +
    • +
    • +
      +

      channelName

      +
      public String channelName()
      +
      Returns the value of the channelName record component.
      +
      +
      Returns:
      +
      the value of the channelName record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/class-use/CreateThread.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/class-use/CreateThread.html new file mode 100644 index 0000000..ad13c85 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/class-use/CreateThread.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.channel.CreateThread (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.channel.CreateThread

+
+No usage of nl.andrewl.concord_core.msg.types.channel.CreateThread
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/class-use/MoveToChannel.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/class-use/MoveToChannel.html new file mode 100644 index 0000000..086cf23 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/class-use/MoveToChannel.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.channel.MoveToChannel (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.channel.MoveToChannel

+
+No usage of nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-summary.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-summary.html new file mode 100644 index 0000000..4d12242 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-summary.html @@ -0,0 +1,121 @@ + + + + +nl.andrewl.concord_core.msg.types.channel (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+
Module concord_core
+

Package nl.andrewl.concord_core.msg.types.channel

+
+
+
package nl.andrewl.concord_core.msg.types.channel
+
+
Messages pertaining to channel interaction and updates.
+
+
+
    +
  • + +
  • +
  • +
    +
    Record Classes
    +
    +
    Class
    +
    Description
    + +
    +
    This message is sent by clients when they indicate that they would like to + create a new thread in their current channel.
    +
    + +
    +
    A message that's sent to a client when they've been moved to another channel.
    +
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-tree.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-tree.html new file mode 100644 index 0000000..e9dfdc9 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-tree.html @@ -0,0 +1,81 @@ + + + + +nl.andrewl.concord_core.msg.types.channel Class Hierarchy (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package nl.andrewl.concord_core.msg.types.channel

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Record +
        +
      • nl.andrewl.concord_core.msg.types.channel.CreateThread (implements nl.andrewl.concord_core.msg.Message)
      • +
      • nl.andrewl.concord_core.msg.types.channel.MoveToChannel (implements nl.andrewl.concord_core.msg.Message)
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-use.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-use.html new file mode 100644 index 0000000..c3426ae --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/channel/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package nl.andrewl.concord_core.msg.types.channel (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
nl.andrewl.concord_core.msg.types.channel

+
+No usage of nl.andrewl.concord_core.msg.types.channel
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/Chat.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/Chat.html new file mode 100644 index 0000000..50c8f6a --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/Chat.html @@ -0,0 +1,433 @@ + + + + +Chat (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class Chat

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.chat.Chat
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record Chat(UUID id, UUID senderId, String senderNickname, long timestamp, String message) +extends Record +implements Message
+
This message contains information about a chat message that a user sent.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final UUID
    + +
    +
    The field for the id record component.
    +
    +
    private final String
    + +
    +
    The field for the message record component.
    +
    +
    private final UUID
    + +
    +
    The field for the senderId record component.
    +
    +
    private final String
    + +
    +
    The field for the senderNickname record component.
    +
    +
    private final long
    + +
    +
    The field for the timestamp record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    Chat(String message)
    +
     
    +
    Chat(UUID senderId, + String senderNickname, + long timestamp, + String message)
    +
     
    +
    Chat(UUID id, + UUID senderId, + String senderNickname, + long timestamp, + String message)
    +
    +
    Creates an instance of a Chat record class.
    +
    +
    Chat(UUID newId, + Chat original)
    +
     
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + +
    id()
    +
    +
    Returns the value of the id record component.
    +
    + + +
    +
    Returns the value of the message record component.
    +
    + + +
    +
    Returns the value of the senderId record component.
    +
    + + +
    +
    Returns the value of the senderNickname record component.
    +
    +
    long
    + +
    +
    Returns the value of the timestamp record component.
    +
    + + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      id

      +
      private final UUID id
      +
      The field for the id record component.
      +
      +
    • +
    • +
      +

      senderId

      +
      private final UUID senderId
      +
      The field for the senderId record component.
      +
      +
    • +
    • +
      +

      senderNickname

      +
      private final String senderNickname
      +
      The field for the senderNickname record component.
      +
      +
    • +
    • +
      +

      timestamp

      +
      private final long timestamp
      +
      The field for the timestamp record component.
      +
      +
    • +
    • +
      +

      message

      +
      private final String message
      +
      The field for the message record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Chat

      +
      public Chat(UUID senderId, + String senderNickname, + long timestamp, + String message)
      +
      +
    • +
    • +
      +

      Chat

      +
      public Chat(String message)
      +
      +
    • +
    • +
      +

      Chat

      +
      public Chat(UUID newId, + Chat original)
      +
      +
    • +
    • +
      +

      Chat

      +
      public Chat(UUID id, + UUID senderId, + String senderNickname, + long timestamp, + String message)
      +
      Creates an instance of a Chat record class.
      +
      +
      Parameters:
      +
      id - the value for the id record component
      +
      senderId - the value for the senderId record component
      +
      senderNickname - the value for the senderNickname record component
      +
      timestamp - the value for the timestamp record component
      +
      message - the value for the message record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with '=='.
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      id

      +
      public UUID id()
      +
      Returns the value of the id record component.
      +
      +
      Returns:
      +
      the value of the id record component
      +
      +
      +
    • +
    • +
      +

      senderId

      +
      public UUID senderId()
      +
      Returns the value of the senderId record component.
      +
      +
      Returns:
      +
      the value of the senderId record component
      +
      +
      +
    • +
    • +
      +

      senderNickname

      +
      public String senderNickname()
      +
      Returns the value of the senderNickname record component.
      +
      +
      Returns:
      +
      the value of the senderNickname record component
      +
      +
      +
    • +
    • +
      +

      timestamp

      +
      public long timestamp()
      +
      Returns the value of the timestamp record component.
      +
      +
      Returns:
      +
      the value of the timestamp record component
      +
      +
      +
    • +
    • +
      +

      message

      +
      public String message()
      +
      Returns the value of the message record component.
      +
      +
      Returns:
      +
      the value of the message record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/ChatHistoryRequest.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/ChatHistoryRequest.html new file mode 100644 index 0000000..777cb10 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/ChatHistoryRequest.html @@ -0,0 +1,375 @@ + + + + +ChatHistoryRequest (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ChatHistoryRequest

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ChatHistoryRequest(UUID channelId, String query) +extends Record +implements Message
+
A message which clients can send to the server to request some messages from + the server's history of all sent messages from a particular source. Every + request must provide the id of the source that messages should be fetched + from, in addition to the type of source (channel, thread, dm). +

+ The query string is a specially-formatted string that allows you to + filter results to only certain messages, using different parameters that + are separated by the ; character. +

+

+ All query parameters are of the form param=value, where + param is the case-sensitive name of the parameter, and + value is the value of the parameter. +

+

+ The following query parameters are supported: +

+
    +
  • count - Fetch up to N messages. Minimum of 1, and + a server-specific maximum count, usually no higher than 1000.
  • +
  • from - ISO-8601 timestamp indicating the timestamp + after which messages should be fetched. Only messages after this + point in time are returned.
  • +
  • to - ISO-8601 timestamp indicating the timestamp + before which messages should be fetched. Only messages before this + point in time are returned.
  • +
  • id - A single message id to fetch. If this parameter + is present, all others are ignored, and a list containing the single + message is returned, if it could be found, otherwise an empty list.
  • +
+

+ Responses to this request are sent via ChatHistoryResponse, where + the list of messages is always sorted by the timestamp. +

+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      channelId

      +
      private final UUID channelId
      +
      The field for the channelId record component.
      +
      +
    • +
    • +
      +

      query

      +
      private final String query
      +
      The field for the query record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ChatHistoryRequest

      +
      public ChatHistoryRequest(UUID channelId)
      +
      +
    • +
    • +
      +

      ChatHistoryRequest

      +
      public ChatHistoryRequest(UUID channelId, + Map<String,String> params)
      +
      +
    • +
    • +
      +

      ChatHistoryRequest

      +
      public ChatHistoryRequest(UUID channelId, + String query)
      +
      Creates an instance of a ChatHistoryRequest record class.
      +
      +
      Parameters:
      +
      channelId - the value for the channelId record component
      +
      query - the value for the query record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getQueryAsMap

      +
      public Map<String,String> getQueryAsMap()
      +
      Utility method to extract the query string's values as a key-value map.
      +
      +
      Returns:
      +
      A map of the query parameters.
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      channelId

      +
      public UUID channelId()
      +
      Returns the value of the channelId record component.
      +
      +
      Returns:
      +
      the value of the channelId record component
      +
      +
      +
    • +
    • +
      +

      query

      +
      public String query()
      +
      Returns the value of the query record component.
      +
      +
      Returns:
      +
      the value of the query record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/ChatHistoryResponse.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/ChatHistoryResponse.html new file mode 100644 index 0000000..bd94291 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/ChatHistoryResponse.html @@ -0,0 +1,314 @@ + + + + +ChatHistoryResponse (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ChatHistoryResponse

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
+
+
+
Record Components:
+
channelId - The id of the channel that the chat messages belong to.
+
messages - The list of messages that comprises the history.
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ChatHistoryResponse(UUID channelId, Chat[] messages) +extends Record +implements Message
+
The response that a server sends to a ChatHistoryRequest. The list of + messages is ordered by timestamp, with the newest messages appearing first.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final UUID
    + +
    +
    The field for the channelId record component.
    +
    +
    private final Chat[]
    + +
    +
    The field for the messages record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    ChatHistoryResponse(UUID channelId, + Chat[] messages)
    +
    +
    Creates an instance of a ChatHistoryResponse record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Returns the value of the channelId record component.
    +
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the messages record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      channelId

      +
      private final UUID channelId
      +
      The field for the channelId record component.
      +
      +
    • +
    • +
      +

      messages

      +
      private final Chat[] messages
      +
      The field for the messages record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ChatHistoryResponse

      +
      public ChatHistoryResponse(UUID channelId, + Chat[] messages)
      +
      Creates an instance of a ChatHistoryResponse record class.
      +
      +
      Parameters:
      +
      channelId - the value for the channelId record component
      +
      messages - the value for the messages record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      channelId

      +
      public UUID channelId()
      +
      Returns the value of the channelId record component.
      +
      +
      Returns:
      +
      the value of the channelId record component
      +
      +
      +
    • +
    • +
      +

      messages

      +
      public Chat[] messages()
      +
      Returns the value of the messages record component.
      +
      +
      Returns:
      +
      the value of the messages record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/Chat.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/Chat.html new file mode 100644 index 0000000..e39136a --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/Chat.html @@ -0,0 +1,119 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.chat.Chat (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.chat.Chat

+
+
Packages that use Chat
+
+
Package
+
Description
+ +
+
Messages pertaining to chat messages and other auxiliary messages regarding + the management of chat information.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/ChatHistoryRequest.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/ChatHistoryRequest.html new file mode 100644 index 0000000..6909d5e --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/ChatHistoryRequest.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest

+
+No usage of nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/ChatHistoryResponse.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/ChatHistoryResponse.html new file mode 100644 index 0000000..d6d7a86 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/class-use/ChatHistoryResponse.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse

+
+No usage of nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-summary.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-summary.html new file mode 100644 index 0000000..831de74 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-summary.html @@ -0,0 +1,125 @@ + + + + +nl.andrewl.concord_core.msg.types.chat (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+
Module concord_core
+

Package nl.andrewl.concord_core.msg.types.chat

+
+
+
package nl.andrewl.concord_core.msg.types.chat
+
+
Messages pertaining to chat messages and other auxiliary messages regarding + the management of chat information.
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-tree.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-tree.html new file mode 100644 index 0000000..fbf919e --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-tree.html @@ -0,0 +1,82 @@ + + + + +nl.andrewl.concord_core.msg.types.chat Class Hierarchy (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package nl.andrewl.concord_core.msg.types.chat

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-use.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-use.html new file mode 100644 index 0000000..378122e --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/chat/package-use.html @@ -0,0 +1,89 @@ + + + + +Uses of Package nl.andrewl.concord_core.msg.types.chat (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
nl.andrewl.concord_core.msg.types.chat

+
+ +
+
Package
+
Description
+ +
+
Messages pertaining to chat messages and other auxiliary messages regarding + the management of chat information.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/Error.Level.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/Error.Level.html new file mode 100644 index 0000000..c0e4f6d --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/Error.Level.html @@ -0,0 +1,126 @@ + + + + +Uses of Enum Class nl.andrewl.concord_core.msg.types.Error.Level (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
nl.andrewl.concord_core.msg.types.Error.Level

+
+
Packages that use Error.Level
+
+
Package
+
Description
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/Error.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/Error.html new file mode 100644 index 0000000..2b0c1af --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/Error.html @@ -0,0 +1,97 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.Error (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.Error

+
+
Packages that use Error
+
+
Package
+
Description
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerMetaData.ChannelData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerMetaData.ChannelData.html new file mode 100644 index 0000000..1f07f32 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerMetaData.ChannelData.html @@ -0,0 +1,115 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData

+
+
Packages that use ServerMetaData.ChannelData
+
+
Package
+
Description
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerMetaData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerMetaData.html new file mode 100644 index 0000000..882acb6 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerMetaData.html @@ -0,0 +1,117 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.ServerMetaData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.ServerMetaData

+
+
Packages that use ServerMetaData
+
+
Package
+
Description
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerUsers.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerUsers.html new file mode 100644 index 0000000..eed00e7 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/ServerUsers.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.ServerUsers (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.ServerUsers

+
+No usage of nl.andrewl.concord_core.msg.types.ServerUsers
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/UserData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/UserData.html new file mode 100644 index 0000000..3ec81a6 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/class-use/UserData.html @@ -0,0 +1,114 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.UserData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.UserData

+
+
Packages that use UserData
+
+
Package
+
Description
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientLogin.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientLogin.html new file mode 100644 index 0000000..4361714 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientLogin.html @@ -0,0 +1,309 @@ + + + + +ClientLogin (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ClientLogin

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ClientLogin(String username, String password) +extends Record +implements Message
+
This message is sent by clients to log into a server that they have already + registered with, but don't have a valid session token for.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final String
    + +
    +
    The field for the password record component.
    +
    +
    private final String
    + +
    +
    The field for the username record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    ClientLogin(String username, + String password)
    +
    +
    Creates an instance of a ClientLogin record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the password record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    + + +
    +
    Returns the value of the username record component.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      username

      +
      private final String username
      +
      The field for the username record component.
      +
      +
    • +
    • +
      +

      password

      +
      private final String password
      +
      The field for the password record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ClientLogin

      +
      public ClientLogin(String username, + String password)
      +
      Creates an instance of a ClientLogin record class.
      +
      +
      Parameters:
      +
      username - the value for the username record component
      +
      password - the value for the password record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      username

      +
      public String username()
      +
      Returns the value of the username record component.
      +
      +
      Returns:
      +
      the value of the username record component
      +
      +
      +
    • +
    • +
      +

      password

      +
      public String password()
      +
      Returns the value of the password record component.
      +
      +
      Returns:
      +
      the value of the password record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientRegistration.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientRegistration.html new file mode 100644 index 0000000..0d541ca --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientRegistration.html @@ -0,0 +1,371 @@ + + + + +ClientRegistration (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ClientRegistration

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ClientRegistration(String name, String description, String username, String password) +extends Record +implements Message
+
The data that new users should send to a server in order to register in that + server.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final String
    + +
    +
    The field for the description record component.
    +
    +
    private final String
    + +
    +
    The field for the name record component.
    +
    +
    private final String
    + +
    +
    The field for the password record component.
    +
    +
    private final String
    + +
    +
    The field for the username record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    ClientRegistration(String name, + String description, + String username, + String password)
    +
    +
    Creates an instance of a ClientRegistration record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Returns the value of the description record component.
    +
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the name record component.
    +
    + + +
    +
    Returns the value of the password record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    + + +
    +
    Returns the value of the username record component.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      name

      +
      private final String name
      +
      The field for the name record component.
      +
      +
    • +
    • +
      +

      description

      +
      private final String description
      +
      The field for the description record component.
      +
      +
    • +
    • +
      +

      username

      +
      private final String username
      +
      The field for the username record component.
      +
      +
    • +
    • +
      +

      password

      +
      private final String password
      +
      The field for the password record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ClientRegistration

      +
      public ClientRegistration(String name, + String description, + String username, + String password)
      +
      Creates an instance of a ClientRegistration record class.
      +
      +
      Parameters:
      +
      name - the value for the name record component
      +
      description - the value for the description record component
      +
      username - the value for the username record component
      +
      password - the value for the password record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      name

      +
      public String name()
      +
      Returns the value of the name record component.
      +
      +
      Returns:
      +
      the value of the name record component
      +
      +
      +
    • +
    • +
      +

      description

      +
      public String description()
      +
      Returns the value of the description record component.
      +
      +
      Returns:
      +
      the value of the description record component
      +
      +
      +
    • +
    • +
      +

      username

      +
      public String username()
      +
      Returns the value of the username record component.
      +
      +
      Returns:
      +
      the value of the username record component
      +
      +
      +
    • +
    • +
      +

      password

      +
      public String password()
      +
      Returns the value of the password record component.
      +
      +
      Returns:
      +
      the value of the password record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientSessionResume.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientSessionResume.html new file mode 100644 index 0000000..c69e445 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ClientSessionResume.html @@ -0,0 +1,278 @@ + + + + +ClientSessionResume (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ClientSessionResume

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ClientSessionResume(String sessionToken) +extends Record +implements Message
+
This message is sent by the client to log into a server using a session token + instead of a username/password combination.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final String
    + +
    +
    The field for the sessionToken record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Creates an instance of a ClientSessionResume record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the sessionToken record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      sessionToken

      +
      private final String sessionToken
      +
      The field for the sessionToken record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ClientSessionResume

      +
      public ClientSessionResume(String sessionToken)
      +
      Creates an instance of a ClientSessionResume record class.
      +
      +
      Parameters:
      +
      sessionToken - the value for the sessionToken record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      sessionToken

      +
      public String sessionToken()
      +
      Returns the value of the sessionToken record component.
      +
      +
      Returns:
      +
      the value of the sessionToken record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/KeyData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/KeyData.html new file mode 100644 index 0000000..bac2075 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/KeyData.html @@ -0,0 +1,346 @@ + + + + +KeyData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class KeyData

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
+
+
+
Record Components:
+
iv - The initialization vector bytes.
+
salt - The salt bytes.
+
publicKey - The public key.
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record KeyData(byte[] iv, byte[] salt, byte[] publicKey) +extends Record +implements Message
+
This message is sent as the first message from both the server and the client + to establish an end-to-end encryption via a key exchange.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final byte[]
    + +
    +
    The field for the iv record component.
    +
    +
    private final byte[]
    + +
    +
    The field for the publicKey record component.
    +
    +
    private final byte[]
    + +
    +
    The field for the salt record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    KeyData(byte[] iv, + byte[] salt, + byte[] publicKey)
    +
    +
    Creates an instance of a KeyData record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    +
    byte[]
    +
    iv()
    +
    +
    Returns the value of the iv record component.
    +
    +
    byte[]
    + +
    +
    Returns the value of the publicKey record component.
    +
    +
    byte[]
    + +
    +
    Returns the value of the salt record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface nl.andrewl.concord_core.msg.Message

    +byteSize, getTypeSerializer
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      iv

      +
      private final byte[] iv
      +
      The field for the iv record component.
      +
      +
    • +
    • +
      +

      salt

      +
      private final byte[] salt
      +
      The field for the salt record component.
      +
      +
    • +
    • +
      +

      publicKey

      +
      private final byte[] publicKey
      +
      The field for the publicKey record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      KeyData

      +
      public KeyData(byte[] iv, + byte[] salt, + byte[] publicKey)
      +
      Creates an instance of a KeyData record class.
      +
      +
      Parameters:
      +
      iv - the value for the iv record component
      +
      salt - the value for the salt record component
      +
      publicKey - the value for the publicKey record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      iv

      +
      public byte[] iv()
      +
      Returns the value of the iv record component.
      +
      +
      Returns:
      +
      the value of the iv record component
      +
      +
      +
    • +
    • +
      +

      salt

      +
      public byte[] salt()
      +
      Returns the value of the salt record component.
      +
      +
      Returns:
      +
      the value of the salt record component
      +
      +
      +
    • +
    • +
      +

      publicKey

      +
      public byte[] publicKey()
      +
      Returns the value of the publicKey record component.
      +
      +
      Returns:
      +
      the value of the publicKey record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/RegistrationStatus.Type.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/RegistrationStatus.Type.html new file mode 100644 index 0000000..57bfb96 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/RegistrationStatus.Type.html @@ -0,0 +1,264 @@ + + + + +RegistrationStatus.Type (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Enum Class RegistrationStatus.Type

+
+
java.lang.Object +
java.lang.Enum<RegistrationStatus.Type> +
nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<RegistrationStatus.Type>, Constable
+
+
+
Enclosing class:
+
RegistrationStatus
+
+
+
public static enum RegistrationStatus.Type +extends Enum<RegistrationStatus.Type>
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    + +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Type

      +
      private Type()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static RegistrationStatus.Type[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static RegistrationStatus.Type valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/RegistrationStatus.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/RegistrationStatus.html new file mode 100644 index 0000000..554b557 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/RegistrationStatus.html @@ -0,0 +1,333 @@ + + + + +RegistrationStatus (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class RegistrationStatus

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record RegistrationStatus(RegistrationStatus.Type type, String reason) +extends Record +implements Message
+
A response from the server which indicates the current status of the client's + registration request.
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      type

      +
      private final RegistrationStatus.Type type
      +
      The field for the type record component.
      +
      +
    • +
    • +
      +

      reason

      +
      private final String reason
      +
      The field for the reason record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RegistrationStatus

      +
      public RegistrationStatus(RegistrationStatus.Type type, + String reason)
      +
      Creates an instance of a RegistrationStatus record class.
      +
      +
      Parameters:
      +
      type - the value for the type record component
      +
      reason - the value for the reason record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      pending

      +
      public static RegistrationStatus pending()
      +
      +
    • +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      type

      +
      public RegistrationStatus.Type type()
      +
      Returns the value of the type record component.
      +
      +
      Returns:
      +
      the value of the type record component
      +
      +
      +
    • +
    • +
      +

      reason

      +
      public String reason()
      +
      Returns the value of the reason record component.
      +
      +
      Returns:
      +
      the value of the reason record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ServerWelcome.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ServerWelcome.html new file mode 100644 index 0000000..d4d4115 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/ServerWelcome.html @@ -0,0 +1,411 @@ + + + + +ServerWelcome (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class ServerWelcome

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
+
+
+
Record Components:
+
clientId - The unique id of this client.
+
sessionToken - The token which this client can use to reconnect to the + server later and still be recognized as the same user.
+
currentChannelId - The id of the channel that the user is placed in.
+
currentChannelName - The name of the channel that the user is placed in.
+
metaData - Information about the server's structure.
+
+
+
All Implemented Interfaces:
+
Message
+
+
+
public record ServerWelcome(UUID clientId, String sessionToken, UUID currentChannelId, String currentChannelName, ServerMetaData metaData) +extends Record +implements Message
+
This message is sent from the server to the client after the server accepts + the client's identification and registers the client in the server.
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      clientId

      +
      private final UUID clientId
      +
      The field for the clientId record component.
      +
      +
    • +
    • +
      +

      sessionToken

      +
      private final String sessionToken
      +
      The field for the sessionToken record component.
      +
      +
    • +
    • +
      +

      currentChannelId

      +
      private final UUID currentChannelId
      +
      The field for the currentChannelId record component.
      +
      +
    • +
    • +
      +

      currentChannelName

      +
      private final String currentChannelName
      +
      The field for the currentChannelName record component.
      +
      +
    • +
    • +
      +

      metaData

      +
      private final ServerMetaData metaData
      +
      The field for the metaData record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ServerWelcome

      +
      public ServerWelcome(UUID clientId, + String sessionToken, + UUID currentChannelId, + String currentChannelName, + ServerMetaData metaData)
      +
      Creates an instance of a ServerWelcome record class.
      +
      +
      Parameters:
      +
      clientId - the value for the clientId record component
      +
      sessionToken - the value for the sessionToken record component
      +
      currentChannelId - the value for the currentChannelId record component
      +
      currentChannelName - the value for the currentChannelName record component
      +
      metaData - the value for the metaData record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      clientId

      +
      public UUID clientId()
      +
      Returns the value of the clientId record component.
      +
      +
      Returns:
      +
      the value of the clientId record component
      +
      +
      +
    • +
    • +
      +

      sessionToken

      +
      public String sessionToken()
      +
      Returns the value of the sessionToken record component.
      +
      +
      Returns:
      +
      the value of the sessionToken record component
      +
      +
      +
    • +
    • +
      +

      currentChannelId

      +
      public UUID currentChannelId()
      +
      Returns the value of the currentChannelId record component.
      +
      +
      Returns:
      +
      the value of the currentChannelId record component
      +
      +
      +
    • +
    • +
      +

      currentChannelName

      +
      public String currentChannelName()
      +
      Returns the value of the currentChannelName record component.
      +
      +
      Returns:
      +
      the value of the currentChannelName record component
      +
      +
      +
    • +
    • +
      +

      metaData

      +
      public ServerMetaData metaData()
      +
      Returns the value of the metaData record component.
      +
      +
      Returns:
      +
      the value of the metaData record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientLogin.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientLogin.html new file mode 100644 index 0000000..9821aa6 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientLogin.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.client_setup.ClientLogin

+
+No usage of nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientRegistration.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientRegistration.html new file mode 100644 index 0000000..6ffb4b7 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientRegistration.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration

+
+No usage of nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientSessionResume.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientSessionResume.html new file mode 100644 index 0000000..7e34f02 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ClientSessionResume.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume

+
+No usage of nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/KeyData.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/KeyData.html new file mode 100644 index 0000000..66e348e --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/KeyData.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.client_setup.KeyData (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.client_setup.KeyData

+
+No usage of nl.andrewl.concord_core.msg.types.client_setup.KeyData
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/RegistrationStatus.Type.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/RegistrationStatus.Type.html new file mode 100644 index 0000000..7266717 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/RegistrationStatus.Type.html @@ -0,0 +1,125 @@ + + + + +Uses of Enum Class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type

+
+
Packages that use RegistrationStatus.Type
+
+
Package
+
Description
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/RegistrationStatus.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/RegistrationStatus.html new file mode 100644 index 0000000..c6543b3 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/RegistrationStatus.html @@ -0,0 +1,89 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus

+
+
Packages that use RegistrationStatus
+
+
Package
+
Description
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ServerWelcome.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ServerWelcome.html new file mode 100644 index 0000000..5bde8bd --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/class-use/ServerWelcome.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome

+
+No usage of nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-summary.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-summary.html new file mode 100644 index 0000000..dedae8c --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-summary.html @@ -0,0 +1,150 @@ + + + + +nl.andrewl.concord_core.msg.types.client_setup (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+
Module concord_core
+

Package nl.andrewl.concord_core.msg.types.client_setup

+
+
+
package nl.andrewl.concord_core.msg.types.client_setup
+
+
Messages pertaining to the establishment of a connection with clients.
+
+
+
    +
  • + +
  • +
  • +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    This message is sent by clients to log into a server that they have already + registered with, but don't have a valid session token for.
    +
    + +
    +
    The data that new users should send to a server in order to register in that + server.
    +
    + +
    +
    This message is sent by the client to log into a server using a session token + instead of a username/password combination.
    +
    + +
    +
    This message is sent as the first message from both the server and the client + to establish an end-to-end encryption via a key exchange.
    +
    + +
    +
    A response from the server which indicates the current status of the client's + registration request.
    +
    + +
     
    + +
    +
    This message is sent from the server to the client after the server accepts + the client's identification and registers the client in the server.
    +
    +
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-tree.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-tree.html new file mode 100644 index 0000000..7766516 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-tree.html @@ -0,0 +1,99 @@ + + + + +nl.andrewl.concord_core.msg.types.client_setup Class Hierarchy (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package nl.andrewl.concord_core.msg.types.client_setup

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Record +
        +
      • nl.andrewl.concord_core.msg.types.client_setup.ClientLogin (implements nl.andrewl.concord_core.msg.Message)
      • +
      • nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration (implements nl.andrewl.concord_core.msg.Message)
      • +
      • nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume (implements nl.andrewl.concord_core.msg.Message)
      • +
      • nl.andrewl.concord_core.msg.types.client_setup.KeyData (implements nl.andrewl.concord_core.msg.Message)
      • +
      • nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus (implements nl.andrewl.concord_core.msg.Message)
      • +
      • nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome (implements nl.andrewl.concord_core.msg.Message)
      • +
      +
    • +
    +
  • +
+
+
+

Enum Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-use.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-use.html new file mode 100644 index 0000000..f588122 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/client_setup/package-use.html @@ -0,0 +1,91 @@ + + + + +Uses of Package nl.andrewl.concord_core.msg.types.client_setup (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
nl.andrewl.concord_core.msg.types.client_setup

+
+ +
+
Package
+
Description
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-summary.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-summary.html new file mode 100644 index 0000000..cc77f54 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-summary.html @@ -0,0 +1,158 @@ + + + + +nl.andrewl.concord_core.msg.types (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+
Module concord_core
+

Package nl.andrewl.concord_core.msg.types

+
+
+
package nl.andrewl.concord_core.msg.types
+
+
Contains all the various message types which can be sent between the server + and client. +

+ Note that not all message types defined here may be supported by the + latest version of Concord. See Serializer + for the definitive list. +

+
+
+
    +
  • + +
  • +
  • +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    Error message which can be sent between either the server or client to + indicate an unsavory situation.
    +
    + +
    +
    The error level gives an indication as to the severity of the error.
    +
    + +
    +
    Metadata is sent by the server to clients to inform them of the structure of + the server.
    +
    + +
    +
    Metadata about a top-level channel in the server which is visible and + joinable for a user.
    +
    + +
    +
    This message is sent from the server to the client whenever a change happens + which requires the server to notify clients about a change of the list of + global users.
    +
    + +
    +
    Standard set of user data that is used mainly as a component of other more + complex messages.
    +
    +
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-tree.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-tree.html new file mode 100644 index 0000000..5b24e6e --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-tree.html @@ -0,0 +1,98 @@ + + + + +nl.andrewl.concord_core.msg.types Class Hierarchy (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package nl.andrewl.concord_core.msg.types

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-use.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-use.html new file mode 100644 index 0000000..3fde922 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/msg/types/package-use.html @@ -0,0 +1,122 @@ + + + + +Uses of Package nl.andrewl.concord_core.msg.types (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
nl.andrewl.concord_core.msg.types

+
+ +
+
Package
+
Description
+ +
+
Contains all the various message types which can be sent between the server + and client.
+
+ +
+
Messages pertaining to the establishment of a connection with clients.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/ChainedDataOutputStream.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/ChainedDataOutputStream.html new file mode 100644 index 0000000..f9dc56c --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/ChainedDataOutputStream.html @@ -0,0 +1,309 @@ + + + + +ChainedDataOutputStream (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Class ChainedDataOutputStream

+
+
java.lang.Object +
nl.andrewl.concord_core.util.ChainedDataOutputStream
+
+
+
+
public class ChainedDataOutputStream +extends Object
+
A more complex output stream which redefines certain methods for convenience + with method chaining.
+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/ExtendedDataInputStream.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/ExtendedDataInputStream.html new file mode 100644 index 0000000..9050baa --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/ExtendedDataInputStream.html @@ -0,0 +1,262 @@ + + + + +ExtendedDataInputStream (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Class ExtendedDataInputStream

+
+
java.lang.Object +
java.io.InputStream +
java.io.FilterInputStream +
java.io.DataInputStream +
nl.andrewl.concord_core.util.ExtendedDataInputStream
+
+
+
+
+
+
+
All Implemented Interfaces:
+
Closeable, DataInput, AutoCloseable
+
+
+
public class ExtendedDataInputStream +extends DataInputStream
+
An extended output stream which contains additional methods for reading more + complex types that are used by the Concord system.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ExtendedDataInputStream

      +
      public ExtendedDataInputStream(InputStream in)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/Pair.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/Pair.html new file mode 100644 index 0000000..ffe22ab --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/Pair.html @@ -0,0 +1,305 @@ + + + + +Pair (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class Pair<A,B>

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.util.Pair<A,B>
+
+
+
+
+
Type Parameters:
+
A - The first object.
+
B - The second object.
+
+
+
public record Pair<A,B>(A first, B second) +extends Record
+
Simple generic pair of two objects.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final A
    + +
    +
    The field for the first record component.
    +
    +
    private final B
    + +
    +
    The field for the second record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    Pair(A first, + B second)
    +
    +
    Creates an instance of a Pair record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    + + +
    +
    Returns the value of the first record component.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the second record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      first

      +
      private final A first
      +
      The field for the first record component.
      +
      +
    • +
    • +
      +

      second

      +
      private final B second
      +
      The field for the second record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Pair

      +
      public Pair(A first, + B second)
      +
      Creates an instance of a Pair record class.
      +
      +
      Parameters:
      +
      first - the value for the first record component
      +
      second - the value for the second record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      first

      +
      public A first()
      +
      Returns the value of the first record component.
      +
      +
      Returns:
      +
      the value of the first record component
      +
      +
      +
    • +
    • +
      +

      second

      +
      public B second()
      +
      Returns the value of the second record component.
      +
      +
      Returns:
      +
      the value of the second record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/Triple.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/Triple.html new file mode 100644 index 0000000..354235c --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/Triple.html @@ -0,0 +1,337 @@ + + + + +Triple (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Module concord_core
+ +

Record Class Triple<A,B,C>

+
+
java.lang.Object +
java.lang.Record +
nl.andrewl.concord_core.util.Triple<A,B,C>
+
+
+
+
+
Type Parameters:
+
A - The first object.
+
B - The second object.
+
C - The third object.
+
+
+
public record Triple<A,B,C>(A first, B second, C third) +extends Record
+
Simple generic triple of objects.
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    private final A
    + +
    +
    The field for the first record component.
    +
    +
    private final B
    + +
    +
    The field for the second record component.
    +
    +
    private final C
    + +
    +
    The field for the third record component.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    Triple(A first, + B second, + C third)
    +
    +
    Creates an instance of a Triple record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    + + +
    +
    Returns the value of the first record component.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    + + +
    +
    Returns the value of the second record component.
    +
    + + +
    +
    Returns the value of the third record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      first

      +
      private final A first
      +
      The field for the first record component.
      +
      +
    • +
    • +
      +

      second

      +
      private final B second
      +
      The field for the second record component.
      +
      +
    • +
    • +
      +

      third

      +
      private final C third
      +
      The field for the third record component.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Triple

      +
      public Triple(A first, + B second, + C third)
      +
      Creates an instance of a Triple record class.
      +
      +
      Parameters:
      +
      first - the value for the first record component
      +
      second - the value for the second record component
      +
      third - the value for the third record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      first

      +
      public A first()
      +
      Returns the value of the first record component.
      +
      +
      Returns:
      +
      the value of the first record component
      +
      +
      +
    • +
    • +
      +

      second

      +
      public B second()
      +
      Returns the value of the second record component.
      +
      +
      Returns:
      +
      the value of the second record component
      +
      +
      +
    • +
    • +
      +

      third

      +
      public C third()
      +
      Returns the value of the third record component.
      +
      +
      Returns:
      +
      the value of the third record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/ChainedDataOutputStream.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/ChainedDataOutputStream.html new file mode 100644 index 0000000..5e6186f --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/ChainedDataOutputStream.html @@ -0,0 +1,136 @@ + + + + +Uses of Class nl.andrewl.concord_core.util.ChainedDataOutputStream (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
nl.andrewl.concord_core.util.ChainedDataOutputStream

+
+
Packages that use ChainedDataOutputStream
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+ +
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/ExtendedDataInputStream.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/ExtendedDataInputStream.html new file mode 100644 index 0000000..b9bdead --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/ExtendedDataInputStream.html @@ -0,0 +1,92 @@ + + + + +Uses of Class nl.andrewl.concord_core.util.ExtendedDataInputStream (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
nl.andrewl.concord_core.util.ExtendedDataInputStream

+
+
Packages that use ExtendedDataInputStream
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/Pair.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/Pair.html new file mode 100644 index 0000000..6087be0 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/Pair.html @@ -0,0 +1,95 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.util.Pair (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.util.Pair

+
+
Packages that use Pair
+
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/Triple.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/Triple.html new file mode 100644 index 0000000..c2ecbbb --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/class-use/Triple.html @@ -0,0 +1,62 @@ + + + + +Uses of Record Class nl.andrewl.concord_core.util.Triple (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
nl.andrewl.concord_core.util.Triple

+
+No usage of nl.andrewl.concord_core.util.Triple
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-summary.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-summary.html new file mode 100644 index 0000000..a6438ab --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-summary.html @@ -0,0 +1,114 @@ + + + + +nl.andrewl.concord_core.util (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+
Module concord_core
+

Package nl.andrewl.concord_core.util

+
+
+
package nl.andrewl.concord_core.util
+
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+
    +
  • +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    A more complex output stream which redefines certain methods for convenience + with method chaining.
    +
    + +
    +
    An extended output stream which contains additional methods for reading more + complex types that are used by the Concord system.
    +
    +
    Pair<A,B>
    +
    +
    Simple generic pair of two objects.
    +
    +
    Triple<A,B,C>
    +
    +
    Simple generic triple of objects.
    +
    +
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-tree.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-tree.html new file mode 100644 index 0000000..6f37095 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-tree.html @@ -0,0 +1,95 @@ + + + + +nl.andrewl.concord_core.util Class Hierarchy (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package nl.andrewl.concord_core.util

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-use.html b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-use.html new file mode 100644 index 0000000..a0aea41 --- /dev/null +++ b/docs/javadoc/core/concord_core/nl/andrewl/concord_core/util/package-use.html @@ -0,0 +1,118 @@ + + + + +Uses of Package nl.andrewl.concord_core.util (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
nl.andrewl.concord_core.util

+
+ +
+
Package
+
Description
+ +
+
Message components which are used by the server and the default client + implementation.
+
+ +
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+
+ +
+
+ +
+
+ + diff --git a/docs/javadoc/core/constant-values.html b/docs/javadoc/core/constant-values.html new file mode 100644 index 0000000..4e38bec --- /dev/null +++ b/docs/javadoc/core/constant-values.html @@ -0,0 +1,87 @@ + + + + +Constant Field Values (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Constant Field Values

+
+

Contents

+ +
+
+
+

nl.andrewl.*

+
    +
  • +
    nl.andrewl.concord_core.msg.MessageUtils
    +
    +
    Modifier and Type
    +
    Constant Field
    +
    Value
    +
    public static final int
    + +
    4
    +
    public static final int
    + +
    16
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/docs/javadoc/core/element-list b/docs/javadoc/core/element-list new file mode 100644 index 0000000..012a968 --- /dev/null +++ b/docs/javadoc/core/element-list @@ -0,0 +1,7 @@ +module:concord_core +nl.andrewl.concord_core.msg +nl.andrewl.concord_core.msg.types +nl.andrewl.concord_core.msg.types.channel +nl.andrewl.concord_core.msg.types.chat +nl.andrewl.concord_core.msg.types.client_setup +nl.andrewl.concord_core.util diff --git a/docs/javadoc/core/help-doc.html b/docs/javadoc/core/help-doc.html new file mode 100644 index 0000000..3e743ef --- /dev/null +++ b/docs/javadoc/core/help-doc.html @@ -0,0 +1,196 @@ + + + + +API Help (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Module

+

Each module has a page that contains a list of its packages, dependencies on other modules, and services, with a summary for each. These pages may contain the following categories:

+
    +
  • Packages
  • +
  • Modules
  • +
  • Services
  • +
+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enum Classes
  • +
  • Exceptions
  • +
  • Errors
  • +
  • Annotation Interfaces
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Use

+

Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Constant Field Values

+

The Constant Field Values page lists the static final fields and their values.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+ +
+
+ + diff --git a/docs/javadoc/core/index-all.html b/docs/javadoc/core/index-all.html new file mode 100644 index 0000000..53888c2 --- /dev/null +++ b/docs/javadoc/core/index-all.html @@ -0,0 +1,1175 @@ + + + + +Index (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I K L M N O P Q R S T U V W 
All Classes and Interfaces|All Packages|Constant Field Values +

A

+
+
ACCEPTED - Enum constant in enum class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type
+
 
+
+

B

+
+
byteSize() - Method in interface nl.andrewl.concord_core.msg.Message
+
+
Convenience method to determine the size of this message in bytes.
+
+
byteSizeFunction - Variable in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
The field for the byteSizeFunction record component.
+
+
byteSizeFunction() - Method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Returns the value of the byteSizeFunction record component.
+
+
+

C

+
+
ChainedDataOutputStream - Class in nl.andrewl.concord_core.util
+
+
A more complex output stream which redefines certain methods for convenience + with method chaining.
+
+
ChainedDataOutputStream(DataOutputStream) - Constructor for class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
ChannelData(UUID, String) - Constructor for record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
Creates an instance of a ChannelData record class.
+
+
channelId - Variable in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
The field for the channelId record component.
+
+
channelId - Variable in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
The field for the channelId record component.
+
+
channelId() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
Returns the value of the channelId record component.
+
+
channelId() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
Returns the value of the channelId record component.
+
+
channelName - Variable in record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
The field for the channelName record component.
+
+
channelName() - Method in record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
Returns the value of the channelName record component.
+
+
channels - Variable in record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
The field for the channels record component.
+
+
channels() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
Returns the value of the channels record component.
+
+
Chat - Record Class in nl.andrewl.concord_core.msg.types.chat
+
+
This message contains information about a chat message that a user sent.
+
+
Chat(String) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.Chat
+
 
+
Chat(UUID, String, long, String) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.Chat
+
 
+
Chat(UUID, UUID, String, long, String) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Creates an instance of a Chat record class.
+
+
Chat(UUID, Chat) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.Chat
+
 
+
ChatHistoryRequest - Record Class in nl.andrewl.concord_core.msg.types.chat
+
+
A message which clients can send to the server to request some messages from + the server's history of all sent messages from a particular source.
+
+
ChatHistoryRequest(UUID) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
 
+
ChatHistoryRequest(UUID, String) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
Creates an instance of a ChatHistoryRequest record class.
+
+
ChatHistoryRequest(UUID, Map<String, String>) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
 
+
ChatHistoryResponse - Record Class in nl.andrewl.concord_core.msg.types.chat
+
+
The response that a server sends to a ChatHistoryRequest.
+
+
ChatHistoryResponse(UUID, Chat[]) - Constructor for record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
Creates an instance of a ChatHistoryResponse record class.
+
+
clientId - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
The field for the clientId record component.
+
+
clientId() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Returns the value of the clientId record component.
+
+
ClientLogin - Record Class in nl.andrewl.concord_core.msg.types.client_setup
+
+
This message is sent by clients to log into a server that they have already + registered with, but don't have a valid session token for.
+
+
ClientLogin(String, String) - Constructor for record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
Creates an instance of a ClientLogin record class.
+
+
ClientRegistration - Record Class in nl.andrewl.concord_core.msg.types.client_setup
+
+
The data that new users should send to a server in order to register in that + server.
+
+
ClientRegistration(String, String, String, String) - Constructor for record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Creates an instance of a ClientRegistration record class.
+
+
ClientSessionResume - Record Class in nl.andrewl.concord_core.msg.types.client_setup
+
+
This message is sent by the client to log into a server using a session token + instead of a username/password combination.
+
+
ClientSessionResume(String) - Constructor for record class nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+
+
Creates an instance of a ClientSessionResume record class.
+
+
computeSecretKey(byte[], byte[], byte[]) - Static method in class nl.andrewl.concord_core.msg.Encryption
+
 
+
concord_core - module concord_core
+
+
The core components that are used by both the Concord server and the default + client implementation.
+
+
CreateThread - Record Class in nl.andrewl.concord_core.msg.types.channel
+
+
This message is sent by clients when they indicate that they would like to + create a new thread in their current channel.
+
+
CreateThread(UUID, String) - Constructor for record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
Creates an instance of a CreateThread record class.
+
+
currentChannelId - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
The field for the currentChannelId record component.
+
+
currentChannelId() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Returns the value of the currentChannelId record component.
+
+
currentChannelName - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
The field for the currentChannelName record component.
+
+
currentChannelName() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Returns the value of the currentChannelName record component.
+
+
+

D

+
+
description - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
The field for the description record component.
+
+
description() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Returns the value of the description record component.
+
+
+

E

+
+
Encryption - Class in nl.andrewl.concord_core.msg
+
+
Utility class for handling the establishment of encrypted communication.
+
+
Encryption() - Constructor for class nl.andrewl.concord_core.msg.Encryption
+
 
+
ENUM_BYTES - Static variable in class nl.andrewl.concord_core.msg.MessageUtils
+
 
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.Error
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.ServerUsers
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.msg.types.UserData
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.util.Pair
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class nl.andrewl.concord_core.util.Triple
+
+
Indicates whether some other object is "equal to" this one.
+
+
error(String) - Static method in record class nl.andrewl.concord_core.msg.types.Error
+
+
Creates an error message.
+
+
Error - Record Class in nl.andrewl.concord_core.msg.types
+
+
Error message which can be sent between either the server or client to + indicate an unsavory situation.
+
+
Error(Error.Level, String) - Constructor for record class nl.andrewl.concord_core.msg.types.Error
+
+
Creates an instance of a Error record class.
+
+
ERROR - Enum constant in enum class nl.andrewl.concord_core.msg.types.Error.Level
+
 
+
Error.Level - Enum Class in nl.andrewl.concord_core.msg.types
+
+
The error level gives an indication as to the severity of the error.
+
+
ExtendedDataInputStream - Class in nl.andrewl.concord_core.util
+
+
An extended output stream which contains additional methods for reading more + complex types that are used by the Concord system.
+
+
ExtendedDataInputStream(InputStream) - Constructor for class nl.andrewl.concord_core.util.ExtendedDataInputStream
+
 
+
+

F

+
+
first - Variable in record class nl.andrewl.concord_core.util.Pair
+
+
The field for the first record component.
+
+
first - Variable in record class nl.andrewl.concord_core.util.Triple
+
+
The field for the first record component.
+
+
first() - Method in record class nl.andrewl.concord_core.util.Pair
+
+
Returns the value of the first record component.
+
+
first() - Method in record class nl.andrewl.concord_core.util.Triple
+
+
Returns the value of the first record component.
+
+
+

G

+
+
generateByteSizeFunction(RecordComponent[]) - Static method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Generates a function implementation that counts the byte size of a + message based on the message's record component types.
+
+
generatedMessageTypes - Static variable in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
 
+
generateForRecord(Class<T>) - Static method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Generates a message type instance for a given class, using reflection to + introspect the fields of the message.
+
+
generateReader(Constructor<T>) - Static method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Generates a message reader for the given message constructor method.
+
+
generateWriter(RecordComponent[]) - Static method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Generates a message writer for the given message record components.
+
+
get(Class<T>) - Static method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Gets the MessageTypeSerializer instance for a given message class, and + generates a new implementation if none exists yet.
+
+
getByteSize(Object) - Static method in class nl.andrewl.concord_core.msg.MessageUtils
+
 
+
getByteSize(Object...) - Static method in class nl.andrewl.concord_core.msg.MessageUtils
+
 
+
getByteSize(String) - Static method in class nl.andrewl.concord_core.msg.MessageUtils
+
+
Gets the number of bytes that the given string will occupy when it is + serialized.
+
+
getByteSize(String...) - Static method in class nl.andrewl.concord_core.msg.MessageUtils
+
+
Gets the number of bytes that all the given strings will occupy when + serialized with a length-prefix encoding.
+
+
getByteSize(Message) - Static method in class nl.andrewl.concord_core.msg.MessageUtils
+
 
+
getByteSize(T[]) - Static method in class nl.andrewl.concord_core.msg.MessageUtils
+
 
+
getQueryAsMap() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
Utility method to extract the query string's values as a key-value map.
+
+
getTypeSerializer() - Method in interface nl.andrewl.concord_core.msg.Message
+
+
Convenience method to get the serializer for this message's type, using + the static auto-generated set of serializers.
+
+
+

H

+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.Error
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.ServerUsers
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.msg.types.UserData
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.util.Pair
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class nl.andrewl.concord_core.util.Triple
+
+
Returns a hash code value for this object.
+
+
+

I

+
+
id - Variable in record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
The field for the id record component.
+
+
id - Variable in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
The field for the id record component.
+
+
id - Variable in record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
The field for the id record component.
+
+
id - Variable in record class nl.andrewl.concord_core.msg.types.UserData
+
+
The field for the id record component.
+
+
id() - Method in record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
Returns the value of the id record component.
+
+
id() - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Returns the value of the id record component.
+
+
id() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
Returns the value of the id record component.
+
+
id() - Method in record class nl.andrewl.concord_core.msg.types.UserData
+
+
Returns the value of the id record component.
+
+
inverseMessageTypes - Variable in class nl.andrewl.concord_core.msg.Serializer
+
+
An inverse of Serializer.messageTypes which is used to look up a + message's byte value when you know the class of the message.
+
+
iv - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
The field for the iv record component.
+
+
iv() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
Returns the value of the iv record component.
+
+
+

K

+
+
KeyData - Record Class in nl.andrewl.concord_core.msg.types.client_setup
+
+
This message is sent as the first message from both the server and the client + to establish an end-to-end encryption via a key exchange.
+
+
KeyData(byte[], byte[], byte[]) - Constructor for record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
Creates an instance of a KeyData record class.
+
+
+

L

+
+
level - Variable in record class nl.andrewl.concord_core.msg.types.Error
+
+
The field for the level record component.
+
+
level() - Method in record class nl.andrewl.concord_core.msg.types.Error
+
+
Returns the value of the level record component.
+
+
Level() - Constructor for enum class nl.andrewl.concord_core.msg.types.Error.Level
+
 
+
+

M

+
+
message - Variable in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
The field for the message record component.
+
+
message - Variable in record class nl.andrewl.concord_core.msg.types.Error
+
+
The field for the message record component.
+
+
message() - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Returns the value of the message record component.
+
+
message() - Method in record class nl.andrewl.concord_core.msg.types.Error
+
+
Returns the value of the message record component.
+
+
Message - Interface in nl.andrewl.concord_core.msg
+
+
Represents any message which can be sent over the network.
+
+
messageClass - Variable in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
The field for the messageClass record component.
+
+
messageClass() - Method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Returns the value of the messageClass record component.
+
+
messageId - Variable in record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
The field for the messageId record component.
+
+
messageId() - Method in record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
Returns the value of the messageId record component.
+
+
MessageReader<T extends Message> - Interface in nl.andrewl.concord_core.msg
+
 
+
messages - Variable in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
The field for the messages record component.
+
+
messages() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
Returns the value of the messages record component.
+
+
messageTypes - Variable in class nl.andrewl.concord_core.msg.Serializer
+
+
The mapping which defines each supported message type and the byte value + used to identify it when reading and writing messages.
+
+
MessageTypeSerializer<T extends Message> - Record Class in nl.andrewl.concord_core.msg
+
+
Record containing the components needed to read and write a given message.
+
+
MessageTypeSerializer(Class<T>, Function<T, Integer>, MessageReader<T>, MessageWriter<T>) - Constructor for record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Creates an instance of a MessageTypeSerializer record class.
+
+
MessageUtils - Class in nl.andrewl.concord_core.msg
+
+
Utility class which provides method for serializing and deserializing complex + data types.
+
+
MessageUtils() - Constructor for class nl.andrewl.concord_core.msg.MessageUtils
+
 
+
MessageWriter<T extends Message> - Interface in nl.andrewl.concord_core.msg
+
 
+
metaData - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
The field for the metaData record component.
+
+
metaData() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Returns the value of the metaData record component.
+
+
MoveToChannel - Record Class in nl.andrewl.concord_core.msg.types.channel
+
+
A message that's sent to a client when they've been moved to another channel.
+
+
MoveToChannel(UUID) - Constructor for record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
 
+
MoveToChannel(UUID, String) - Constructor for record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
Creates an instance of a MoveToChannel record class.
+
+
+

N

+
+
name - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
The field for the name record component.
+
+
name - Variable in record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
The field for the name record component.
+
+
name - Variable in record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
The field for the name record component.
+
+
name - Variable in record class nl.andrewl.concord_core.msg.types.UserData
+
+
The field for the name record component.
+
+
name() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Returns the value of the name record component.
+
+
name() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
Returns the value of the name record component.
+
+
name() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
Returns the value of the name record component.
+
+
name() - Method in record class nl.andrewl.concord_core.msg.types.UserData
+
+
Returns the value of the name record component.
+
+
nl.andrewl.concord_core.msg - package nl.andrewl.concord_core.msg
+
+
Message components which are used by the server and the default client + implementation.
+
+
nl.andrewl.concord_core.msg.types - package nl.andrewl.concord_core.msg.types
+
+
Contains all the various message types which can be sent between the server + and client.
+
+
nl.andrewl.concord_core.msg.types.channel - package nl.andrewl.concord_core.msg.types.channel
+
+
Messages pertaining to channel interaction and updates.
+
+
nl.andrewl.concord_core.msg.types.chat - package nl.andrewl.concord_core.msg.types.chat
+
+
Messages pertaining to chat messages and other auxiliary messages regarding + the management of chat information.
+
+
nl.andrewl.concord_core.msg.types.client_setup - package nl.andrewl.concord_core.msg.types.client_setup
+
+
Messages pertaining to the establishment of a connection with clients.
+
+
nl.andrewl.concord_core.util - package nl.andrewl.concord_core.util
+
+
Contains some useful one-off utility classes that any consumer of Concord + messages could benefit from.
+
+
+

O

+
+
out - Variable in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
+

P

+
+
Pair<A,B> - Record Class in nl.andrewl.concord_core.util
+
+
Simple generic pair of two objects.
+
+
Pair(A, B) - Constructor for record class nl.andrewl.concord_core.util.Pair
+
+
Creates an instance of a Pair record class.
+
+
password - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
The field for the password record component.
+
+
password - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
The field for the password record component.
+
+
password() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
Returns the value of the password record component.
+
+
password() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Returns the value of the password record component.
+
+
pending() - Static method in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
 
+
PENDING - Enum constant in enum class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type
+
 
+
publicKey - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
The field for the publicKey record component.
+
+
publicKey() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
Returns the value of the publicKey record component.
+
+
+

Q

+
+
query - Variable in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
The field for the query record component.
+
+
query() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
Returns the value of the query record component.
+
+
+

R

+
+
read(ExtendedDataInputStream) - Method in interface nl.andrewl.concord_core.msg.MessageReader
+
+
Reads all of this message's properties from the given input stream.
+
+
readArray(MessageTypeSerializer<T>) - Method in class nl.andrewl.concord_core.util.ExtendedDataInputStream
+
 
+
readEnum(Class<T>) - Method in class nl.andrewl.concord_core.util.ExtendedDataInputStream
+
 
+
reader - Variable in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
The field for the reader record component.
+
+
reader() - Method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Returns the value of the reader record component.
+
+
readMessage(InputStream) - Method in class nl.andrewl.concord_core.msg.Serializer
+
+
Reads a message from the given input stream and returns it, or throws an + exception if an error occurred while reading from the stream.
+
+
readObject(Class<?>) - Method in class nl.andrewl.concord_core.util.ExtendedDataInputStream
+
+
Reads an object from the stream that is of a certain expected type.
+
+
readString() - Method in class nl.andrewl.concord_core.util.ExtendedDataInputStream
+
 
+
readUUID() - Method in class nl.andrewl.concord_core.util.ExtendedDataInputStream
+
 
+
reason - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
The field for the reason record component.
+
+
reason() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
Returns the value of the reason record component.
+
+
registerType(int, Class<T>) - Method in class nl.andrewl.concord_core.msg.Serializer
+
+
Helper method which registers a message type to be supported by the + serializer, by adding it to the normal and inverse mappings.
+
+
RegistrationStatus - Record Class in nl.andrewl.concord_core.msg.types.client_setup
+
+
A response from the server which indicates the current status of the client's + registration request.
+
+
RegistrationStatus(RegistrationStatus.Type, String) - Constructor for record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
Creates an instance of a RegistrationStatus record class.
+
+
RegistrationStatus.Type - Enum Class in nl.andrewl.concord_core.msg.types.client_setup
+
 
+
REJECTED - Enum constant in enum class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type
+
 
+
+

S

+
+
salt - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
The field for the salt record component.
+
+
salt() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
Returns the value of the salt record component.
+
+
second - Variable in record class nl.andrewl.concord_core.util.Pair
+
+
The field for the second record component.
+
+
second - Variable in record class nl.andrewl.concord_core.util.Triple
+
+
The field for the second record component.
+
+
second() - Method in record class nl.andrewl.concord_core.util.Pair
+
+
Returns the value of the second record component.
+
+
second() - Method in record class nl.andrewl.concord_core.util.Triple
+
+
Returns the value of the second record component.
+
+
senderId - Variable in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
The field for the senderId record component.
+
+
senderId() - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Returns the value of the senderId record component.
+
+
senderNickname - Variable in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
The field for the senderNickname record component.
+
+
senderNickname() - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Returns the value of the senderNickname record component.
+
+
Serializer - Class in nl.andrewl.concord_core.msg
+
+
This class is responsible for reading and writing messages from streams.
+
+
Serializer() - Constructor for class nl.andrewl.concord_core.msg.Serializer
+
+
Constructs a new serializer instance, with a standard set of supported + message types.
+
+
ServerMetaData - Record Class in nl.andrewl.concord_core.msg.types
+
+
Metadata is sent by the server to clients to inform them of the structure of + the server.
+
+
ServerMetaData(String, ServerMetaData.ChannelData[]) - Constructor for record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
Creates an instance of a ServerMetaData record class.
+
+
ServerMetaData.ChannelData - Record Class in nl.andrewl.concord_core.msg.types
+
+
Metadata about a top-level channel in the server which is visible and + joinable for a user.
+
+
ServerUsers - Record Class in nl.andrewl.concord_core.msg.types
+
+
This message is sent from the server to the client whenever a change happens + which requires the server to notify clients about a change of the list of + global users.
+
+
ServerUsers(UserData[]) - Constructor for record class nl.andrewl.concord_core.msg.types.ServerUsers
+
+
Creates an instance of a ServerUsers record class.
+
+
ServerWelcome - Record Class in nl.andrewl.concord_core.msg.types.client_setup
+
+
This message is sent from the server to the client after the server accepts + the client's identification and registers the client in the server.
+
+
ServerWelcome(UUID, String, UUID, String, ServerMetaData) - Constructor for record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Creates an instance of a ServerWelcome record class.
+
+
sessionToken - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+
+
The field for the sessionToken record component.
+
+
sessionToken - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
The field for the sessionToken record component.
+
+
sessionToken() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+
+
Returns the value of the sessionToken record component.
+
+
sessionToken() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Returns the value of the sessionToken record component.
+
+
+

T

+
+
third - Variable in record class nl.andrewl.concord_core.util.Triple
+
+
The field for the third record component.
+
+
third() - Method in record class nl.andrewl.concord_core.util.Triple
+
+
Returns the value of the third record component.
+
+
timestamp - Variable in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
The field for the timestamp record component.
+
+
timestamp() - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Returns the value of the timestamp record component.
+
+
title - Variable in record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
The field for the title record component.
+
+
title() - Method in record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
Returns the value of the title record component.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.channel.CreateThread
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.channel.MoveToChannel
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.chat.Chat
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.KeyData
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ServerWelcome
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.Error
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.ServerMetaData
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.ServerUsers
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.msg.types.UserData
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.util.Pair
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class nl.andrewl.concord_core.util.Triple
+
+
Returns a string representation of this record class.
+
+
Triple<A,B,C> - Record Class in nl.andrewl.concord_core.util
+
+
Simple generic triple of objects.
+
+
Triple(A, B, C) - Constructor for record class nl.andrewl.concord_core.util.Triple
+
+
Creates an instance of a Triple record class.
+
+
type - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
The field for the type record component.
+
+
type() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus
+
+
Returns the value of the type record component.
+
+
Type() - Constructor for enum class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type
+
 
+
+

U

+
+
upgrade(InputStream, OutputStream, Serializer) - Static method in class nl.andrewl.concord_core.msg.Encryption
+
+
Upgrades the given input and output streams to a pair of cipher input and + output streams.
+
+
UserData - Record Class in nl.andrewl.concord_core.msg.types
+
+
Standard set of user data that is used mainly as a component of other more + complex messages.
+
+
UserData(UUID, String) - Constructor for record class nl.andrewl.concord_core.msg.types.UserData
+
+
Creates an instance of a UserData record class.
+
+
username - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
The field for the username record component.
+
+
username - Variable in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
The field for the username record component.
+
+
username() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientLogin
+
+
Returns the value of the username record component.
+
+
username() - Method in record class nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration
+
+
Returns the value of the username record component.
+
+
users - Variable in record class nl.andrewl.concord_core.msg.types.ServerUsers
+
+
The field for the users record component.
+
+
users() - Method in record class nl.andrewl.concord_core.msg.types.ServerUsers
+
+
Returns the value of the users record component.
+
+
UUID_BYTES - Static variable in class nl.andrewl.concord_core.msg.MessageUtils
+
 
+
+

V

+
+
valueOf(String) - Static method in enum class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class nl.andrewl.concord_core.msg.types.Error.Level
+
+
Returns the enum constant of this class with the specified name.
+
+
values() - Static method in enum class nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class nl.andrewl.concord_core.msg.types.Error.Level
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
+

W

+
+
warning(String) - Static method in record class nl.andrewl.concord_core.msg.types.Error
+
+
Creates a warning message.
+
+
WARNING - Enum constant in enum class nl.andrewl.concord_core.msg.types.Error.Level
+
 
+
write(T, ChainedDataOutputStream) - Method in interface nl.andrewl.concord_core.msg.MessageWriter
+
+
Writes this message to the given output stream.
+
+
writeArray(T[]) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
writeEnum(Enum<?>) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
writeInt(int) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
writeMessage(Message) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
writeMessage(Message, OutputStream) - Method in class nl.andrewl.concord_core.msg.Serializer
+
+
Writes a message to the given output stream.
+
+
writeObject(Object, Class<?>) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
+
Writes an object to the stream.
+
+
writer - Variable in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
The field for the writer record component.
+
+
writer() - Method in record class nl.andrewl.concord_core.msg.MessageTypeSerializer
+
+
Returns the value of the writer record component.
+
+
writeString(String) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
writeStrings(String...) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
writeUUID(UUID) - Method in class nl.andrewl.concord_core.util.ChainedDataOutputStream
+
 
+
+A B C D E F G H I K L M N O P Q R S T U V W 
All Classes and Interfaces|All Packages|Constant Field Values
+ +
+
+ + diff --git a/docs/javadoc/core/index.html b/docs/javadoc/core/index.html new file mode 100644 index 0000000..b164fe0 --- /dev/null +++ b/docs/javadoc/core/index.html @@ -0,0 +1,26 @@ + + + + +concord-core 1.0-SNAPSHOT API + + + + + + + + + + + +
+ +

concord_core/module-summary.html

+
+ + diff --git a/docs/javadoc/core/jquery-ui.overrides.css b/docs/javadoc/core/jquery-ui.overrides.css new file mode 100644 index 0000000..f89acb6 --- /dev/null +++ b/docs/javadoc/core/jquery-ui.overrides.css @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; +} diff --git a/docs/javadoc/core/legal/ADDITIONAL_LICENSE_INFO b/docs/javadoc/core/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..b62cc3e --- /dev/null +++ b/docs/javadoc/core/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1 @@ +Please see ..\java.base\ADDITIONAL_LICENSE_INFO diff --git a/docs/javadoc/core/legal/ASSEMBLY_EXCEPTION b/docs/javadoc/core/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..0d4cfb4 --- /dev/null +++ b/docs/javadoc/core/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1 @@ +Please see ..\java.base\ASSEMBLY_EXCEPTION diff --git a/docs/javadoc/core/legal/LICENSE b/docs/javadoc/core/legal/LICENSE new file mode 100644 index 0000000..4ad9fe4 --- /dev/null +++ b/docs/javadoc/core/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/docs/javadoc/core/legal/jquery.md b/docs/javadoc/core/legal/jquery.md new file mode 100644 index 0000000..8054a34 --- /dev/null +++ b/docs/javadoc/core/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.5.1 + +### jQuery License +``` +jQuery v 3.5.1 +Copyright JS Foundation and other contributors, https://js.foundation/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.5.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/docs/javadoc/core/legal/jqueryUI.md b/docs/javadoc/core/legal/jqueryUI.md new file mode 100644 index 0000000..8031bdb --- /dev/null +++ b/docs/javadoc/core/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.12.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/docs/javadoc/core/member-search-index.js b/docs/javadoc/core/member-search-index.js new file mode 100644 index 0000000..5f819e1 --- /dev/null +++ b/docs/javadoc/core/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus.Type","l":"ACCEPTED"},{"p":"nl.andrewl.concord_core.msg","c":"Message","l":"byteSize()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"byteSizeFunction"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"byteSizeFunction()"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"ChainedDataOutputStream(DataOutputStream)","u":"%3Cinit%3E(java.io.DataOutputStream)"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"ChannelData(UUID, String)","u":"%3Cinit%3E(java.util.UUID,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"channelId"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"channelId"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"channelId()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"channelId()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"channelName"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"channelName()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"channels"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"channels()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"Chat(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"Chat(UUID, Chat)","u":"%3Cinit%3E(java.util.UUID,nl.andrewl.concord_core.msg.types.chat.Chat)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"Chat(UUID, String, long, String)","u":"%3Cinit%3E(java.util.UUID,java.lang.String,long,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"Chat(UUID, UUID, String, long, String)","u":"%3Cinit%3E(java.util.UUID,java.util.UUID,java.lang.String,long,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"ChatHistoryRequest(UUID)","u":"%3Cinit%3E(java.util.UUID)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"ChatHistoryRequest(UUID, Map)","u":"%3Cinit%3E(java.util.UUID,java.util.Map)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"ChatHistoryRequest(UUID, String)","u":"%3Cinit%3E(java.util.UUID,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"ChatHistoryResponse(UUID, Chat[])","u":"%3Cinit%3E(java.util.UUID,nl.andrewl.concord_core.msg.types.chat.Chat[])"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"clientId"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"clientId()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"ClientLogin(String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"ClientRegistration(String, String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientSessionResume","l":"ClientSessionResume(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"nl.andrewl.concord_core.msg","c":"Encryption","l":"computeSecretKey(byte[], byte[], byte[])","u":"computeSecretKey(byte[],byte[],byte[])"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"CreateThread(UUID, String)","u":"%3Cinit%3E(java.util.UUID,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"currentChannelId"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"currentChannelId()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"currentChannelName"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"currentChannelName()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"description"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"description()"},{"p":"nl.andrewl.concord_core.msg","c":"Encryption","l":"Encryption()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"ENUM_BYTES"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientSessionResume","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerUsers","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error.Level","l":"ERROR"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"Error(Error.Level, String)","u":"%3Cinit%3E(nl.andrewl.concord_core.msg.types.Error.Level,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"error(String)","u":"error(java.lang.String)"},{"p":"nl.andrewl.concord_core.util","c":"ExtendedDataInputStream","l":"ExtendedDataInputStream(InputStream)","u":"%3Cinit%3E(java.io.InputStream)"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"first"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"first"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"first()"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"first()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"generateByteSizeFunction(RecordComponent[])","u":"generateByteSizeFunction(java.lang.reflect.RecordComponent[])"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"generatedMessageTypes"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"generateForRecord(Class)","u":"generateForRecord(java.lang.Class)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"generateReader(Constructor)","u":"generateReader(java.lang.reflect.Constructor)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"generateWriter(RecordComponent[])","u":"generateWriter(java.lang.reflect.RecordComponent[])"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"get(Class)","u":"get(java.lang.Class)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"getByteSize(Message)","u":"getByteSize(nl.andrewl.concord_core.msg.Message)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"getByteSize(Object)","u":"getByteSize(java.lang.Object)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"getByteSize(Object...)","u":"getByteSize(java.lang.Object...)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"getByteSize(String)","u":"getByteSize(java.lang.String)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"getByteSize(String...)","u":"getByteSize(java.lang.String...)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"getByteSize(T[])"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"getQueryAsMap()"},{"p":"nl.andrewl.concord_core.msg","c":"Message","l":"getTypeSerializer()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientSessionResume","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerUsers","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"hashCode()"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"hashCode()"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"hashCode()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"id"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"id"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"id"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"id"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"id()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"id()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"id()"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"id()"},{"p":"nl.andrewl.concord_core.msg","c":"Serializer","l":"inverseMessageTypes"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"iv"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"iv()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"KeyData(byte[], byte[], byte[])","u":"%3Cinit%3E(byte[],byte[],byte[])"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"level"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"level()"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error.Level","l":"Level()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"message"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"message"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"message()"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"message()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"messageClass"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"messageClass()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"messageId"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"messageId()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"messages"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"messages()"},{"p":"nl.andrewl.concord_core.msg","c":"Serializer","l":"messageTypes"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"MessageTypeSerializer(Class, Function, MessageReader, MessageWriter)","u":"%3Cinit%3E(java.lang.Class,java.util.function.Function,nl.andrewl.concord_core.msg.MessageReader,nl.andrewl.concord_core.msg.MessageWriter)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"MessageUtils()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"metaData"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"metaData()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"MoveToChannel(UUID)","u":"%3Cinit%3E(java.util.UUID)"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"MoveToChannel(UUID, String)","u":"%3Cinit%3E(java.util.UUID,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"name"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"name"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"name"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"name"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"name()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"name()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"name()"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"name()"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"out"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"Pair(A, B)","u":"%3Cinit%3E(A,B)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"password"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"password"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"password()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"password()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus.Type","l":"PENDING"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"pending()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"publicKey"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"publicKey()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"query"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"query()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageReader","l":"read(ExtendedDataInputStream)","u":"read(nl.andrewl.concord_core.util.ExtendedDataInputStream)"},{"p":"nl.andrewl.concord_core.util","c":"ExtendedDataInputStream","l":"readArray(MessageTypeSerializer)","u":"readArray(nl.andrewl.concord_core.msg.MessageTypeSerializer)"},{"p":"nl.andrewl.concord_core.util","c":"ExtendedDataInputStream","l":"readEnum(Class)","u":"readEnum(java.lang.Class)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"reader"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"reader()"},{"p":"nl.andrewl.concord_core.msg","c":"Serializer","l":"readMessage(InputStream)","u":"readMessage(java.io.InputStream)"},{"p":"nl.andrewl.concord_core.util","c":"ExtendedDataInputStream","l":"readObject(Class)","u":"readObject(java.lang.Class)"},{"p":"nl.andrewl.concord_core.util","c":"ExtendedDataInputStream","l":"readString()"},{"p":"nl.andrewl.concord_core.util","c":"ExtendedDataInputStream","l":"readUUID()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"reason"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"reason()"},{"p":"nl.andrewl.concord_core.msg","c":"Serializer","l":"registerType(int, Class)","u":"registerType(int,java.lang.Class)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"RegistrationStatus(RegistrationStatus.Type, String)","u":"%3Cinit%3E(nl.andrewl.concord_core.msg.types.client_setup.RegistrationStatus.Type,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus.Type","l":"REJECTED"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"salt"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"salt()"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"second"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"second"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"second()"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"second()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"senderId"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"senderId()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"senderNickname"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"senderNickname()"},{"p":"nl.andrewl.concord_core.msg","c":"Serializer","l":"Serializer()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"ServerMetaData(String, ServerMetaData.ChannelData[])","u":"%3Cinit%3E(java.lang.String,nl.andrewl.concord_core.msg.types.ServerMetaData.ChannelData[])"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerUsers","l":"ServerUsers(UserData[])","u":"%3Cinit%3E(nl.andrewl.concord_core.msg.types.UserData[])"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"ServerWelcome(UUID, String, UUID, String, ServerMetaData)","u":"%3Cinit%3E(java.util.UUID,java.lang.String,java.util.UUID,java.lang.String,nl.andrewl.concord_core.msg.types.ServerMetaData)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientSessionResume","l":"sessionToken"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"sessionToken"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientSessionResume","l":"sessionToken()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"sessionToken()"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"third"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"third()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"timestamp"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"timestamp()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"title"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"title()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"CreateThread","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.channel","c":"MoveToChannel","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"Chat","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryRequest","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.chat","c":"ChatHistoryResponse","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientSessionResume","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"KeyData","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ServerWelcome","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData.ChannelData","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerMetaData","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerUsers","l":"toString()"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"toString()"},{"p":"nl.andrewl.concord_core.util","c":"Pair","l":"toString()"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"toString()"},{"p":"nl.andrewl.concord_core.util","c":"Triple","l":"Triple(A, B, C)","u":"%3Cinit%3E(A,B,C)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"type"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus","l":"type()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus.Type","l":"Type()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_core.msg","c":"Encryption","l":"upgrade(InputStream, OutputStream, Serializer)","u":"upgrade(java.io.InputStream,java.io.OutputStream,nl.andrewl.concord_core.msg.Serializer)"},{"p":"nl.andrewl.concord_core.msg.types","c":"UserData","l":"UserData(UUID, String)","u":"%3Cinit%3E(java.util.UUID,java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"username"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"username"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientLogin","l":"username()"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"ClientRegistration","l":"username()"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerUsers","l":"users"},{"p":"nl.andrewl.concord_core.msg.types","c":"ServerUsers","l":"users()"},{"p":"nl.andrewl.concord_core.msg","c":"MessageUtils","l":"UUID_BYTES"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus.Type","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error.Level","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","c":"RegistrationStatus.Type","l":"values()"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error.Level","l":"values()"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error.Level","l":"WARNING"},{"p":"nl.andrewl.concord_core.msg.types","c":"Error","l":"warning(String)","u":"warning(java.lang.String)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageWriter","l":"write(T, ChainedDataOutputStream)","u":"write(T,nl.andrewl.concord_core.util.ChainedDataOutputStream)"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeArray(T[])"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeEnum(Enum)","u":"writeEnum(java.lang.Enum)"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeInt(int)"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeMessage(Message)","u":"writeMessage(nl.andrewl.concord_core.msg.Message)"},{"p":"nl.andrewl.concord_core.msg","c":"Serializer","l":"writeMessage(Message, OutputStream)","u":"writeMessage(nl.andrewl.concord_core.msg.Message,java.io.OutputStream)"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeObject(Object, Class)","u":"writeObject(java.lang.Object,java.lang.Class)"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"writer"},{"p":"nl.andrewl.concord_core.msg","c":"MessageTypeSerializer","l":"writer()"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeString(String)","u":"writeString(java.lang.String)"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeStrings(String...)","u":"writeStrings(java.lang.String...)"},{"p":"nl.andrewl.concord_core.util","c":"ChainedDataOutputStream","l":"writeUUID(UUID)","u":"writeUUID(java.util.UUID)"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/core/module-search-index.js b/docs/javadoc/core/module-search-index.js new file mode 100644 index 0000000..6fc149d --- /dev/null +++ b/docs/javadoc/core/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [{"l":"concord_core"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/core/overview-tree.html b/docs/javadoc/core/overview-tree.html new file mode 100644 index 0000000..090cb1c --- /dev/null +++ b/docs/javadoc/core/overview-tree.html @@ -0,0 +1,143 @@ + + + + +Class Hierarchy (concord-core 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+
+
+ +
+
+
+ + diff --git a/docs/javadoc/core/package-search-index.js b/docs/javadoc/core/package-search-index.js new file mode 100644 index 0000000..bf95964 --- /dev/null +++ b/docs/javadoc/core/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"m":"concord_core","l":"nl.andrewl.concord_core.msg"},{"m":"concord_core","l":"nl.andrewl.concord_core.msg.types"},{"m":"concord_core","l":"nl.andrewl.concord_core.msg.types.channel"},{"m":"concord_core","l":"nl.andrewl.concord_core.msg.types.chat"},{"m":"concord_core","l":"nl.andrewl.concord_core.msg.types.client_setup"},{"m":"concord_core","l":"nl.andrewl.concord_core.util"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/core/resources/glass.png b/docs/javadoc/core/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/docs/javadoc/core/resources/glass.png differ diff --git a/docs/javadoc/core/resources/x.png b/docs/javadoc/core/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/docs/javadoc/core/resources/x.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/docs/javadoc/core/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..34abd18 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/docs/javadoc/core/script-dir/images/ui-bg_glass_65_dadada_1x400.png new file mode 100644 index 0000000..f058a93 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-bg_glass_65_dadada_1x400.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/docs/javadoc/core/script-dir/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..2ce04c1 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/docs/javadoc/core/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..a90afb8 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/docs/javadoc/core/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..dbe091f Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/docs/javadoc/core/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..5dc3593 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-icons_222222_256x240.png b/docs/javadoc/core/script-dir/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..e723e17 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-icons_222222_256x240.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-icons_2e83ff_256x240.png b/docs/javadoc/core/script-dir/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..1f5f497 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-icons_2e83ff_256x240.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-icons_454545_256x240.png b/docs/javadoc/core/script-dir/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..618f5b0 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-icons_454545_256x240.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-icons_888888_256x240.png b/docs/javadoc/core/script-dir/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..ee5e33f Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-icons_888888_256x240.png differ diff --git a/docs/javadoc/core/script-dir/images/ui-icons_cd0a0a_256x240.png b/docs/javadoc/core/script-dir/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..7e8ebc1 Binary files /dev/null and b/docs/javadoc/core/script-dir/images/ui-icons_cd0a0a_256x240.png differ diff --git a/docs/javadoc/core/script-dir/jquery-3.5.1.min.js b/docs/javadoc/core/script-dir/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/docs/javadoc/core/script-dir/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
    ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
      ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
      ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/docs/javadoc/core/script-dir/jquery-ui.structure.min.css b/docs/javadoc/core/script-dir/jquery-ui.structure.min.css new file mode 100644 index 0000000..e880892 --- /dev/null +++ b/docs/javadoc/core/script-dir/jquery-ui.structure.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.12.1 - 2018-12-06 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/docs/javadoc/core/script.js b/docs/javadoc/core/script.js new file mode 100644 index 0000000..864989c --- /dev/null +++ b/docs/javadoc/core/script.js @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); + elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} + +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + contentDiv.addEventListener("scroll", function(e) { + var timeoutID; + if (!timeoutID) { + timeoutID = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + timeoutID = null; + }, 100); + } + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/docs/javadoc/core/search.js b/docs/javadoc/core/search.js new file mode 100644 index 0000000..db3b2f4 --- /dev/null +++ b/docs/javadoc/core/search.js @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Classes and Interfaces"; +var catMembers = "Members"; +var catSearchTags = "Search Tags"; +var highlight = "$&"; +var searchPattern = ""; +var fallbackPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MIN_RESULTS = 3; +var MAX_RESULTS = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher, fallbackMatcher) { + var escapedItem = escapeHtml(item); + var highlighted = escapedItem.replace(matcher, highlight); + if (highlighted === escapedItem) { + highlighted = escapedItem.replace(fallbackMatcher, highlight) + } + return highlighted; +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + } + return urlPrefix; +} +function createSearchPattern(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + var search = $("#search-input"); + var reset = $("#reset-button"); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + search.val(watermark).addClass('watermark'); + search.blur(function() { + if ($(this).val().length === 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + search.on('click keydown paste', function() { + if ($(this).val() === watermark) { + $(this).val('').removeClass('watermark'); + } + }); + reset.click(function() { + search.val('').focus(); + }); + search.focus()[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
    • " + item.category + "
    • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + var fallbackMatcher = new RegExp(fallbackPattern, "gi") + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else { + label = item.l; + } + var li = $("
    • ").appendTo(ul); + var div = $("
      ").appendTo(li); + if (item.category === catSearchTags && item.h) { + if (item.d) { + div.html(label + " (" + item.h + ")
      " + + item.d + "
      "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + var endOfName = leftParen > -1 ? leftParen : input.length; + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + searchPattern = createSearchPattern(request.term); + fallbackPattern = createSearchPattern(request.term.toLowerCase()); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var fallbackMatcher = new RegExp(fallbackPattern, "i"); + + function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { + if (indexArray) { + var newResults = []; + $.each(indexArray, function (i, item) { + item.category = category; + var ranking = rankMatch(matcher.exec(nameFunc(item)), category); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ranking: ranking, item: item}); + } + return newResults.length <= MAX_RESULTS; + }); + return newResults.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }).map(function(e) { + return e.item; + }); + } + return []; + } + function searchIndex(indexArray, category, nameFunc) { + var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); + result = result.concat(primaryResults); + if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { + var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); + result = result.concat(secondaryResults.filter(function (item) { + return primaryResults.indexOf(item) === -1; + })); + } + } + + searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); + searchIndex(packageSearchIndex, catPackages, function(item) { + return (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) : item.l; + }); + searchIndex(typeSearchIndex, catTypes, function(item) { + return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + }); + searchIndex(memberSearchIndex, catMembers, function(item) { + return request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l : item.l; + }); + searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); + + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search-input").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search-input").focus(); + } + } + }); +}); diff --git a/docs/javadoc/core/stylesheet.css b/docs/javadoc/core/stylesheet.css new file mode 100644 index 0000000..836c62d --- /dev/null +++ b/docs/javadoc/core/stylesheet.css @@ -0,0 +1,865 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:15px; +} +h5 { + font-size:14px; +} +h6 { + font-size:13px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +.summary-table dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0; + overflow:hidden; +} +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:11px; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + min-height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.see-list, ul.see-list-long { + padding-left: 0; + list-style: none; +} +ul.see-list li { + display: inline; +} +ul.see-list li:not(:last-child):after, +ul.see-list-long li:not(:last-child):after { + content: ", "; + white-space: pre-wrap; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0; + padding-top:10px; + padding-left:1px; + margin:0; + white-space:pre; +} +.caption a:link, .caption a:visited { + color:#1f389c; +} +.caption a:hover, +.caption a:active { + color:#FFFFFF; +} +.caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +@media screen and (max-width: 800px) { + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-summary .col-last { + grid-column-end: span 2; + } +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:#dee3e9; + font-weight: bold; +} +.col-first, .col-first { + font-size:13px; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:13px; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited, +.constant-values-container a:link, .constant-values-container a:visited, +.all-classes-container a:link, .all-classes-container a:visited, +.all-packages-container a:link, .all-packages-container a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.even-row-color, .even-row-color .table-header { + background-color:#FFFFFF; +} +.odd-row-color, .odd-row-color .table-header { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +#search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset-button { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +span.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak font sizes and paddings for small screens. + */ +@media screen and (max-width: 1050px) { + #search-input { + width: 300px; + } +} +@media screen and (max-width: 800px) { + #search-input { + width: 200px; + } + .top-nav, + .bottom-nav { + font-size: 11px; + padding-top: 6px; + } + .sub-nav { + font-size: 11px; + } + .about-language { + padding-right: 16px; + } + ul.nav-list li, + .sub-nav .nav-list-search { + padding: 6px; + } + ul.sub-nav-list li { + padding-top: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 500px) { + #search-input { + width: 150px; + } + .top-nav, + .bottom-nav { + font-size: 10px; + } + .sub-nav { + font-size: 10px; + } + .about-language { + font-size: 10px; + padding-right: 12px; + } +} diff --git a/docs/javadoc/core/tag-search-index.js b/docs/javadoc/core/tag-search-index.js new file mode 100644 index 0000000..f2a440c --- /dev/null +++ b/docs/javadoc/core/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/core/type-search-index.js b/docs/javadoc/core/type-search-index.js new file mode 100644 index 0000000..5b8a3ab --- /dev/null +++ b/docs/javadoc/core/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"nl.andrewl.concord_core.util","l":"ChainedDataOutputStream"},{"p":"nl.andrewl.concord_core.msg.types","l":"ServerMetaData.ChannelData"},{"p":"nl.andrewl.concord_core.msg.types.chat","l":"Chat"},{"p":"nl.andrewl.concord_core.msg.types.chat","l":"ChatHistoryRequest"},{"p":"nl.andrewl.concord_core.msg.types.chat","l":"ChatHistoryResponse"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","l":"ClientLogin"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","l":"ClientRegistration"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","l":"ClientSessionResume"},{"p":"nl.andrewl.concord_core.msg.types.channel","l":"CreateThread"},{"p":"nl.andrewl.concord_core.msg","l":"Encryption"},{"p":"nl.andrewl.concord_core.msg.types","l":"Error"},{"p":"nl.andrewl.concord_core.util","l":"ExtendedDataInputStream"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","l":"KeyData"},{"p":"nl.andrewl.concord_core.msg.types","l":"Error.Level"},{"p":"nl.andrewl.concord_core.msg","l":"Message"},{"p":"nl.andrewl.concord_core.msg","l":"MessageReader"},{"p":"nl.andrewl.concord_core.msg","l":"MessageTypeSerializer"},{"p":"nl.andrewl.concord_core.msg","l":"MessageUtils"},{"p":"nl.andrewl.concord_core.msg","l":"MessageWriter"},{"p":"nl.andrewl.concord_core.msg.types.channel","l":"MoveToChannel"},{"p":"nl.andrewl.concord_core.util","l":"Pair"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","l":"RegistrationStatus"},{"p":"nl.andrewl.concord_core.msg","l":"Serializer"},{"p":"nl.andrewl.concord_core.msg.types","l":"ServerMetaData"},{"p":"nl.andrewl.concord_core.msg.types","l":"ServerUsers"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","l":"ServerWelcome"},{"p":"nl.andrewl.concord_core.util","l":"Triple"},{"p":"nl.andrewl.concord_core.msg.types.client_setup","l":"RegistrationStatus.Type"},{"p":"nl.andrewl.concord_core.msg.types","l":"UserData"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/server/allclasses-index.html b/docs/javadoc/server/allclasses-index.html new file mode 100644 index 0000000..f0d4c44 --- /dev/null +++ b/docs/javadoc/server/allclasses-index.html @@ -0,0 +1,173 @@ + + + + +All Classes and Interfaces (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      All Classes and Interfaces

      +
      +
      +
      +
      +
      +
      Class
      +
      Description
      + +
      +
      This authentication service provides support for managing the client's + authentication status, such as registering new clients, generating tokens, + and logging in.
      +
      + +
      +
      Represents a single communication area in which messages are sent by clients + and received by all connected clients.
      +
      + +
      +
      Command for interacting with channels on the server.
      +
      + +
      +
      This manager is responsible for keeping track of all the channels in the + server, and controlling modifications to them.
      +
      + +
      +
      Handles client requests to move to another channel.
      +
      + +
      +
      This handler is responsible for taking incoming chat messages and saving them + to the channel's message collection, and then relaying the new message to all + clients in the channel.
      +
      + +
      +
      Handles client requests for sections of chat history for a particular channel.
      +
      + +
      +
      Some common data that's used when dealing with a client who has just joined + the server.
      +
      + +
      +
      The client manager is responsible for managing the set of clients connected + to a server.
      +
      + +
      +
      This thread is responsible for handling the connection to a single client of + a server.
      +
      + +
       
      + +
      +
      The main server implementation, which handles accepting new clients.
      +
      + +
      +
      This component is responsible for publishing the server's metadata to any + discovery servers that have been defined in the server's configuration file.
      +
      + +
      +
      The event manager is responsible for the server's ability to respond to + various client requests.
      +
      + +
       
      + +
      +
      Exception that's thrown when a client's identification information is invalid.
      +
      + +
      +
      This command shows a list of all clients that are currently connected to the server.
      +
      +
      MessageHandler<T extends nl.andrewl.concord_core.msg.Message>
      +
      +
      Defines a component which can handle messages of a certain type which were + received from a client.
      +
      + +
      +
      Simple command-line interface that's available when running the server.
      +
      + +
       
      + +
       
      + +
       
      + +
      +
      This command forcibly stops the server, disconnecting any clients.
      +
      + +
       
      + +
       
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/allpackages-index.html b/docs/javadoc/server/allpackages-index.html new file mode 100644 index 0000000..e150c59 --- /dev/null +++ b/docs/javadoc/server/allpackages-index.html @@ -0,0 +1,83 @@ + + + + +All Packages (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + + +
      + + diff --git a/docs/javadoc/server/concord_server/module-summary.html b/docs/javadoc/server/concord_server/module-summary.html new file mode 100644 index 0000000..ed97262 --- /dev/null +++ b/docs/javadoc/server/concord_server/module-summary.html @@ -0,0 +1,195 @@ + + + + +concord_server (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Module concord_server

      +
      +
      +
      module concord_server
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/ConcordServer.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/ConcordServer.html new file mode 100644 index 0000000..abeb899 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/ConcordServer.html @@ -0,0 +1,444 @@ + + + + +ConcordServer (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ConcordServer

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.ConcordServer
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      Runnable
      +
      +
      +
      public class ConcordServer +extends Object +implements Runnable
      +
      The main server implementation, which handles accepting new clients.
      +
      +
      +
        + +
      • +
        +

        Field Summary

        +
        Fields
        +
        +
        Modifier and Type
        +
        Field
        +
        Description
        +
        private final ChannelManager
        + +
        +
        Manager that handles the collection of channels in this server.
        +
        +
        private final ClientManager
        + +
        +
        Manager that handles the collection of clients connected to this server.
        +
        +
        private final ServerConfig
        + +
        +
        Server configuration data.
        +
        +
        private static final Path
        + +
        +
        The path to this server's configuration file.
        +
        +
        private static final Path
        + +
        +
        The path to this server's database file.
        +
        +
        private final org.dizitart.no2.Nitrite
        + +
        +
        The database that contains all messages and other server information.
        +
        + + +
         
        +
        private final EventManager
        + +
        +
        Manager that handles incoming messages and events by clients.
        +
        +
        private final ExecutorService
        + +
        +
        A general-purpose executor service that can be used to submit async tasks.
        +
        +
        private final IdProvider
        + +
        +
        The component that generates new user and channel ids.
        +
        +
        private boolean
        + +
        +
        Running flag that's used to signal this server's thread to shutdown.
        +
        + + +
         
        +
        private final nl.andrewl.concord_core.msg.Serializer
        + +
        +
        A utility serializer that's mostly used when preparing a message to + broadcast to a set of users, which is more efficient than having each + individual client thread serialize the same message before sending it.
        +
        +
        private final ServerSocket
        + +
        +
        This server's socket, used to accept new client connections.
        +
        +
        +
        +
      • + +
      • +
        +

        Constructor Summary

        +
        Constructors
        +
        +
        Constructor
        +
        Description
        + +
         
        +
        +
        +
      • + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        nl.andrewl.concord_core.msg.types.ServerMetaData
        + +
         
        +
        boolean
        + +
         
        +
        static void
        +
        main(String[] args)
        +
         
        +
        void
        +
        run()
        +
         
        +
        private void
        + +
        +
        Shuts down the server cleanly by doing the following things: + + Disconnecting all clients. + Shutting down any executor services. + Flushing and compacting the message database. + Flushing the server configuration one last time. +
        +
        +
        void
        + +
        +
        Stops the server.
        +
        +
        +
        +
        +
        +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          CONFIG_FILE

          +
          private static final Path CONFIG_FILE
          +
          The path to this server's configuration file.
          +
          +
        • +
        • +
          +

          DATABASE_FILE

          +
          private static final Path DATABASE_FILE
          +
          The path to this server's database file.
          +
          +
        • +
        • +
          +

          running

          +
          private volatile boolean running
          +
          Running flag that's used to signal this server's thread to shutdown.
          +
          +
        • +
        • +
          +

          serverSocket

          +
          private final ServerSocket serverSocket
          +
          This server's socket, used to accept new client connections.
          +
          +
        • +
        • +
          +

          serializer

          +
          private final nl.andrewl.concord_core.msg.Serializer serializer
          +
          A utility serializer that's mostly used when preparing a message to + broadcast to a set of users, which is more efficient than having each + individual client thread serialize the same message before sending it.
          +
          +
        • +
        • +
          +

          config

          +
          private final ServerConfig config
          +
          Server configuration data. This is used to define channels, discovery + server addresses, and more.
          +
          +
        • +
        • +
          +

          idProvider

          +
          private final IdProvider idProvider
          +
          The component that generates new user and channel ids.
          +
          +
        • +
        • +
          +

          db

          +
          private final org.dizitart.no2.Nitrite db
          +
          The database that contains all messages and other server information.
          +
          +
        • +
        • +
          +

          executorService

          +
          private final ExecutorService executorService
          +
          A general-purpose executor service that can be used to submit async tasks.
          +
          +
        • +
        • +
          +

          eventManager

          +
          private final EventManager eventManager
          +
          Manager that handles incoming messages and events by clients.
          +
          +
        • +
        • +
          +

          channelManager

          +
          private final ChannelManager channelManager
          +
          Manager that handles the collection of channels in this server.
          +
          +
        • +
        • +
          +

          clientManager

          +
          private final ClientManager clientManager
          +
          Manager that handles the collection of clients connected to this server.
          +
          +
        • +
        • +
          +

          discoveryServerPublisher

          +
          private final DiscoveryServerPublisher discoveryServerPublisher
          +
          +
        • +
        • +
          +

          scheduledExecutorService

          +
          private final ScheduledExecutorService scheduledExecutorService
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        + +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          isRunning

          +
          public boolean isRunning()
          +
          +
          Returns:
          +
          True if the server is currently running, meaning it is accepting + connections, or false otherwise.
          +
          +
          +
        • +
        • +
          +

          stop

          +
          public void stop()
          +
          Stops the server. Has no effect if the server has not started yet or has + already been stopped.
          +
          +
        • +
        • +
          +

          getMetaData

          +
          public nl.andrewl.concord_core.msg.types.ServerMetaData getMetaData()
          +
          +
          Returns:
          +
          The server's metadata.
          +
          +
          +
        • +
        • +
          +

          shutdown

          +
          private void shutdown()
          +
          Shuts down the server cleanly by doing the following things: +
            +
          1. Disconnecting all clients.
          2. +
          3. Shutting down any executor services.
          4. +
          5. Flushing and compacting the message database.
          6. +
          7. Flushing the server configuration one last time.
          8. +
          +
          +
        • +
        • +
          +

          run

          +
          public void run()
          +
          +
          Specified by:
          +
          run in interface Runnable
          +
          +
          +
        • +
        • +
          +

          main

          +
          public static void main(String[] args) + throws IOException
          +
          +
          Throws:
          +
          IOException
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/DiscoveryServerPublisher.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/DiscoveryServerPublisher.html new file mode 100644 index 0000000..aeaa65a --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/DiscoveryServerPublisher.html @@ -0,0 +1,213 @@ + + + + +DiscoveryServerPublisher (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class DiscoveryServerPublisher

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.DiscoveryServerPublisher
      +
      +
      +
      +
      public class DiscoveryServerPublisher +extends Object
      +
      This component is responsible for publishing the server's metadata to any + discovery servers that have been defined in the server's configuration file.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          mapper

          +
          private final com.fasterxml.jackson.databind.ObjectMapper mapper
          +
          +
        • +
        • +
          +

          httpClient

          +
          private final HttpClient httpClient
          +
          +
        • +
        • +
          +

          config

          +
          private final ServerConfig config
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          DiscoveryServerPublisher

          +
          public DiscoveryServerPublisher(ServerConfig config)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          publish

          +
          public void publish()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/Channel.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/Channel.html new file mode 100644 index 0000000..067452f --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/Channel.html @@ -0,0 +1,373 @@ + + + + +Channel (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class Channel

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.channel.Channel
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      Comparable<Channel>
      +
      +
      +
      public class Channel +extends Object +implements Comparable<Channel>
      +
      Represents a single communication area in which messages are sent by clients + and received by all connected clients. A channel is a top-level communication + medium, and usually this is a server channel or private message between two + clients in a server.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          server

          +
          private final ConcordServer server
          +
          +
        • +
        • +
          +

          id

          +
          private final UUID id
          +
          +
        • +
        • +
          +

          name

          +
          private String name
          +
          +
        • +
        • +
          +

          connectedClients

          +
          private final Set<ClientThread> connectedClients
          +
          The set of clients that are connected to this channel.
          +
          +
        • +
        • +
          +

          messageCollection

          +
          private final org.dizitart.no2.NitriteCollection messageCollection
          +
          A document collection which holds all messages created in this channel, + indexed on id, timestamp, message, and sender's username.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        + +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          addClient

          +
          public void addClient(ClientThread clientThread)
          +
          Adds a client to this channel.
          +
          +
          Parameters:
          +
          clientThread - The client to add.
          +
          +
          +
        • +
        • +
          +

          removeClient

          +
          public void removeClient(ClientThread clientThread)
          +
          Removes a client from this channel.
          +
          +
          Parameters:
          +
          clientThread - The client to remove.
          +
          +
          +
        • +
        • +
          +

          sendMessage

          +
          public void sendMessage(nl.andrewl.concord_core.msg.Message msg) + throws IOException
          +
          Sends a message to all clients that are currently connected to this + channel. Makes use of the server's serializer to preemptively serialize + the data once, so that clients need only write a byte array to their + respective output streams.
          +
          +
          Parameters:
          +
          msg - The message to send.
          +
          Throws:
          +
          IOException - If an error occurs.
          +
          +
          +
        • +
        • +
          +

          getUserData

          +
          public List<nl.andrewl.concord_core.msg.types.UserData> getUserData()
          +
          Gets a list of information about each user in this channel.
          +
          +
          Returns:
          +
          A list of UserData objects.
          +
          +
          +
        • +
        • +
          +

          getAsTag

          +
          public String getAsTag()
          +
          +
        • +
        • +
          +

          equals

          +
          public boolean equals(Object o)
          +
          +
          Overrides:
          +
          equals in class Object
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public int hashCode()
          +
          +
          Overrides:
          +
          hashCode in class Object
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          +
          Overrides:
          +
          toString in class Object
          +
          +
          +
        • +
        • +
          +

          compareTo

          +
          public int compareTo(Channel o)
          +
          +
          Specified by:
          +
          compareTo in interface Comparable<Channel>
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/ChannelManager.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/ChannelManager.html new file mode 100644 index 0000000..54c1115 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/ChannelManager.html @@ -0,0 +1,363 @@ + + + + +ChannelManager (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ChannelManager

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.channel.ChannelManager
      +
      +
      +
      +
      public class ChannelManager +extends Object
      +
      This manager is responsible for keeping track of all the channels in the + server, and controlling modifications to them.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          server

          +
          private final ConcordServer server
          +
          +
        • +
        • +
          +

          channelNameMap

          +
          private final Map<String,Channel> channelNameMap
          +
          +
        • +
        • +
          +

          channelIdMap

          +
          private final Map<UUID,Channel> channelIdMap
          +
          +
        • +
        • +
          +

          privateChannels

          +
          private final Map<Set<UUID>,Channel> privateChannels
          +
          +
        • +
        • +
          +

          privateChannelCollection

          +
          private final org.dizitart.no2.NitriteCollection privateChannelCollection
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ChannelManager

          +
          public ChannelManager(ConcordServer server)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          getChannels

          +
          public Set<Channel> getChannels()
          +
          +
        • +
        • +
          +

          getDefaultChannel

          +
          public Optional<Channel> getDefaultChannel()
          +
          +
        • +
        • +
          +

          addChannel

          +
          public void addChannel(Channel channel)
          +
          +
        • +
        • +
          +

          removeChannel

          +
          public void removeChannel(Channel channel)
          +
          +
        • +
        • +
          +

          getChannelByName

          +
          public Optional<Channel> getChannelByName(String name)
          +
          +
        • +
        • +
          +

          getChannelById

          +
          public Optional<Channel> getChannelById(UUID id)
          +
          +
        • +
        • +
          +

          moveToChannel

          +
          public void moveToChannel(ClientThread client, + Channel channel)
          +
          Moves a client to the given channel. This involves removing the client + from whatever channel they're currently in, if any, moving them to the + new channel, and sending them a message to indicate that it has been done.
          +
          +
          Parameters:
          +
          client - The client to move.
          +
          channel - The channel to move the client to.
          +
          +
          +
        • +
        • +
          +

          getPrivateChannel

          +
          public Channel getPrivateChannel(Set<UUID> clientIds)
          +
          Gets or creates a private channel for the given client ids to be able to + communicate together. No other clients are allowed to access the channel.
          +
          +
          Parameters:
          +
          clientIds - The id of each client which should have access to the + channel.
          +
          Returns:
          +
          The private channel.
          +
          +
          +
        • +
        • +
          +

          getPrivateChannel

          +
          public Optional<Channel> getPrivateChannel(UUID clientId, + UUID channelId)
          +
          Gets a private channel, given the id of a client who is part of the + channel, and the id of the channel.
          +
          +
          Parameters:
          +
          clientId - The id of the client that's requesting the channel.
          +
          channelId - The id of the private channel.
          +
          Returns:
          +
          The private channel.
          +
          +
          +
        • +
        • +
          +

          getPrivateChannelFromDatabase

          +
          private Channel getPrivateChannelFromDatabase(Set<UUID> clientIds)
          +
          Gets and instantiates a private channel from information stored in the + "private-channels" collection of the database, or creates it if it does + not exist yet.
          +
          +
          Parameters:
          +
          clientIds - The set of client ids that the channel is for.
          +
          Returns:
          +
          The private channel.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/class-use/Channel.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/class-use/Channel.html new file mode 100644 index 0000000..9bd2815 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/class-use/Channel.html @@ -0,0 +1,203 @@ + + + + +Uses of Class nl.andrewl.concord_server.channel.Channel (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.channel.Channel

      +
      +
      Packages that use Channel
      + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/class-use/ChannelManager.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/class-use/ChannelManager.html new file mode 100644 index 0000000..e716c53 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/class-use/ChannelManager.html @@ -0,0 +1,89 @@ + + + + +Uses of Class nl.andrewl.concord_server.channel.ChannelManager (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.channel.ChannelManager

      +
      +
      Packages that use ChannelManager
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-summary.html new file mode 100644 index 0000000..1fe8da8 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-summary.html @@ -0,0 +1,117 @@ + + + + +nl.andrewl.concord_server.channel (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server.channel

      +
      +
      +
      package nl.andrewl.concord_server.channel
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-tree.html new file mode 100644 index 0000000..7db0bb1 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-tree.html @@ -0,0 +1,77 @@ + + + + +nl.andrewl.concord_server.channel Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server.channel

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-use.html new file mode 100644 index 0000000..691d7ce --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/channel/package-use.html @@ -0,0 +1,135 @@ + + + + +Uses of Package nl.andrewl.concord_server.channel (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server.channel

      +
      + + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/class-use/ConcordServer.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/class-use/ConcordServer.html new file mode 100644 index 0000000..8e868a0 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/class-use/ConcordServer.html @@ -0,0 +1,271 @@ + + + + +Uses of Class nl.andrewl.concord_server.ConcordServer (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.ConcordServer

      +
      +
      Packages that use ConcordServer
      + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/class-use/DiscoveryServerPublisher.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/class-use/DiscoveryServerPublisher.html new file mode 100644 index 0000000..383f62b --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/class-use/DiscoveryServerPublisher.html @@ -0,0 +1,87 @@ + + + + +Uses of Class nl.andrewl.concord_server.DiscoveryServerPublisher (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.DiscoveryServerPublisher

      +
      +
      Packages that use DiscoveryServerPublisher
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/ServerCli.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/ServerCli.html new file mode 100644 index 0000000..8095b8b --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/ServerCli.html @@ -0,0 +1,213 @@ + + + + +ServerCli (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ServerCli

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.cli.ServerCli
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      Runnable
      +
      +
      +
      public class ServerCli +extends Object +implements Runnable
      +
      Simple command-line interface that's available when running the server. This + accepts commands and various space-separated arguments.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        + +
        +
      • + +
      • +
        +

        Constructor Details

        + +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          run

          +
          public void run()
          +
          +
          Specified by:
          +
          run in interface Runnable
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/ServerCliCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/ServerCliCommand.html new file mode 100644 index 0000000..a1e9d82 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/ServerCliCommand.html @@ -0,0 +1,141 @@ + + + + +ServerCliCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Interface ServerCliCommand

      +
      +
      +
      +
      All Known Implementing Classes:
      +
      ChannelCommand, ListClientsCommand, StopCommand
      +
      +
      +
      public interface ServerCliCommand
      +
      +
      +
        + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        void
        +
        handle(ConcordServer server, + String[] args)
        +
         
        +
        +
        +
        +
        +
      • +
      +
      +
      + +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/class-use/ServerCli.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/class-use/ServerCli.html new file mode 100644 index 0000000..35f5653 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/class-use/ServerCli.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.cli.ServerCli (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.cli.ServerCli

      +
      +No usage of nl.andrewl.concord_server.cli.ServerCli
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/class-use/ServerCliCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/class-use/ServerCliCommand.html new file mode 100644 index 0000000..b9c6b87 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/class-use/ServerCliCommand.html @@ -0,0 +1,115 @@ + + + + +Uses of Interface nl.andrewl.concord_server.cli.ServerCliCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Interface
      nl.andrewl.concord_server.cli.ServerCliCommand

      +
      +
      Packages that use ServerCliCommand
      + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/ChannelCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/ChannelCommand.html new file mode 100644 index 0000000..3b6e2ee --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/ChannelCommand.html @@ -0,0 +1,220 @@ + + + + +ChannelCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ChannelCommand

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.cli.command.ChannelCommand
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      ServerCliCommand
      +
      +
      +
      public class ChannelCommand +extends Object +implements ServerCliCommand
      +
      Command for interacting with channels on the server.
      +
      +
      + +
      +
      + +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/ListClientsCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/ListClientsCommand.html new file mode 100644 index 0000000..018a34d --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/ListClientsCommand.html @@ -0,0 +1,179 @@ + + + + +ListClientsCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ListClientsCommand

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.cli.command.ListClientsCommand
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      ServerCliCommand
      +
      +
      +
      public class ListClientsCommand +extends Object +implements ServerCliCommand
      +
      This command shows a list of all clients that are currently connected to the server.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ListClientsCommand

          +
          public ListClientsCommand()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        + +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/StopCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/StopCommand.html new file mode 100644 index 0000000..b3d96e5 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/StopCommand.html @@ -0,0 +1,179 @@ + + + + +StopCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class StopCommand

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.cli.command.StopCommand
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      ServerCliCommand
      +
      +
      +
      public class StopCommand +extends Object +implements ServerCliCommand
      +
      This command forcibly stops the server, disconnecting any clients.
      +
      +
      + +
      +
      + +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/ChannelCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/ChannelCommand.html new file mode 100644 index 0000000..bb1903e --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/ChannelCommand.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.cli.command.ChannelCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.cli.command.ChannelCommand

      +
      +No usage of nl.andrewl.concord_server.cli.command.ChannelCommand
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/ListClientsCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/ListClientsCommand.html new file mode 100644 index 0000000..ab04e22 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/ListClientsCommand.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.cli.command.ListClientsCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.cli.command.ListClientsCommand

      +
      +No usage of nl.andrewl.concord_server.cli.command.ListClientsCommand
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/StopCommand.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/StopCommand.html new file mode 100644 index 0000000..6ed93a4 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/class-use/StopCommand.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.cli.command.StopCommand (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.cli.command.StopCommand

      +
      +No usage of nl.andrewl.concord_server.cli.command.StopCommand
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-summary.html new file mode 100644 index 0000000..9ea4b5b --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-summary.html @@ -0,0 +1,109 @@ + + + + +nl.andrewl.concord_server.cli.command (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server.cli.command

      +
      +
      +
      package nl.andrewl.concord_server.cli.command
      +
      +
        +
      • + +
      • +
      • +
        +
        Classes
        +
        +
        Class
        +
        Description
        + +
        +
        Command for interacting with channels on the server.
        +
        + +
        +
        This command shows a list of all clients that are currently connected to the server.
        +
        + +
        +
        This command forcibly stops the server, disconnecting any clients.
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-tree.html new file mode 100644 index 0000000..2efa4c5 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-tree.html @@ -0,0 +1,78 @@ + + + + +nl.andrewl.concord_server.cli.command Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server.cli.command

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-use.html new file mode 100644 index 0000000..731a724 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/command/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package nl.andrewl.concord_server.cli.command (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server.cli.command

      +
      +No usage of nl.andrewl.concord_server.cli.command
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-summary.html new file mode 100644 index 0000000..d2c137c --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-summary.html @@ -0,0 +1,121 @@ + + + + +nl.andrewl.concord_server.cli (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server.cli

      +
      +
      +
      package nl.andrewl.concord_server.cli
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-tree.html new file mode 100644 index 0000000..6fd723b --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-tree.html @@ -0,0 +1,82 @@ + + + + +nl.andrewl.concord_server.cli Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server.cli

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +

      Interface Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-use.html new file mode 100644 index 0000000..bd4c5af --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/cli/package-use.html @@ -0,0 +1,97 @@ + + + + +Uses of Package nl.andrewl.concord_server.cli (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server.cli

      +
      + + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/AuthenticationService.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/AuthenticationService.html new file mode 100644 index 0000000..e6293e7 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/AuthenticationService.html @@ -0,0 +1,261 @@ + + + + +AuthenticationService (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class AuthenticationService

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.client.AuthenticationService
      +
      +
      +
      +
      public class AuthenticationService +extends Object
      +
      This authentication service provides support for managing the client's + authentication status, such as registering new clients, generating tokens, + and logging in.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          userCollection

          +
          private final org.dizitart.no2.NitriteCollection userCollection
          +
          +
        • +
        • +
          +

          sessionTokenCollection

          +
          private final org.dizitart.no2.NitriteCollection sessionTokenCollection
          +
          +
        • +
        • +
          +

          server

          +
          private final ConcordServer server
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          AuthenticationService

          +
          public AuthenticationService(ConcordServer server, + org.dizitart.no2.NitriteCollection userCollection)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          registerNewClient

          +
          public ClientConnectionData registerNewClient(nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration registration)
          +
          +
        • +
        • +
          +

          registerPendingClient

          +
          public UUID registerPendingClient(nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration registration)
          +
          +
        • +
        • +
          +

          findAndAuthenticateUser

          +
          public org.dizitart.no2.Document findAndAuthenticateUser(nl.andrewl.concord_core.msg.types.client_setup.ClientLogin login)
          +
          +
        • +
        • +
          +

          findAndAuthenticateUser

          +
          public org.dizitart.no2.Document findAndAuthenticateUser(nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume sessionResume)
          +
          +
        • +
        • +
          +

          generateSessionToken

          +
          public String generateSessionToken(UUID userId)
          +
          +
        • +
        • +
          +

          removeExpiredSessionTokens

          +
          public void removeExpiredSessionTokens()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientConnectionData.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientConnectionData.html new file mode 100644 index 0000000..57167d6 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientConnectionData.html @@ -0,0 +1,372 @@ + + + + +ClientConnectionData (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Record Class ClientConnectionData

      +
      +
      java.lang.Object +
      java.lang.Record +
      nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      +
      +
      +
      Record Components:
      +
      id - The user's unique id.
      +
      username - The user's unique username.
      +
      sessionToken - The user's new session token that can be used the next + time they want to log in.
      +
      newClient - True if this client is connecting for the first time, or + false otherwise.
      +
      +
      +
      public record ClientConnectionData(UUID id, String username, String sessionToken, boolean newClient) +extends Record
      +
      Some common data that's used when dealing with a client who has just joined + the server.
      +
      +
      +
        + +
      • +
        +

        Field Summary

        +
        Fields
        +
        +
        Modifier and Type
        +
        Field
        +
        Description
        +
        private final UUID
        + +
        +
        The field for the id record component.
        +
        +
        private final boolean
        + +
        +
        The field for the newClient record component.
        +
        +
        private final String
        + +
        +
        The field for the sessionToken record component.
        +
        +
        private final String
        + +
        +
        The field for the username record component.
        +
        +
        +
        +
      • + +
      • +
        +

        Constructor Summary

        +
        Constructors
        +
        +
        Constructor
        +
        Description
        +
        ClientConnectionData(UUID id, + String username, + String sessionToken, + boolean newClient)
        +
        +
        Creates an instance of a ClientConnectionData record class.
        +
        +
        +
        +
      • + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        final boolean
        + +
        +
        Indicates whether some other object is "equal to" this one.
        +
        +
        final int
        + +
        +
        Returns a hash code value for this object.
        +
        + +
        id()
        +
        +
        Returns the value of the id record component.
        +
        +
        boolean
        + +
        +
        Returns the value of the newClient record component.
        +
        + + +
        +
        Returns the value of the sessionToken record component.
        +
        +
        final String
        + +
        +
        Returns a string representation of this record class.
        +
        + + +
        +
        Returns the value of the username record component.
        +
        +
        +
        +
        +
        +

        Methods inherited from class java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          id

          +
          private final UUID id
          +
          The field for the id record component.
          +
          +
        • +
        • +
          +

          username

          +
          private final String username
          +
          The field for the username record component.
          +
          +
        • +
        • +
          +

          sessionToken

          +
          private final String sessionToken
          +
          The field for the sessionToken record component.
          +
          +
        • +
        • +
          +

          newClient

          +
          private final boolean newClient
          +
          The field for the newClient record component.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ClientConnectionData

          +
          public ClientConnectionData(UUID id, + String username, + String sessionToken, + boolean newClient)
          +
          Creates an instance of a ClientConnectionData record class.
          +
          +
          Parameters:
          +
          id - the value for the id record component
          +
          username - the value for the username record component
          +
          sessionToken - the value for the sessionToken record component
          +
          newClient - the value for the newClient record component
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          toString

          +
          public final String toString()
          +
          Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
          +
          +
          Specified by:
          +
          toString in class Record
          +
          Returns:
          +
          a string representation of this object
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public final int hashCode()
          +
          Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
          +
          +
          Specified by:
          +
          hashCode in class Record
          +
          Returns:
          +
          a hash code value for this object
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public final boolean equals(Object o)
          +
          Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with '=='.
          +
          +
          Specified by:
          +
          equals in class Record
          +
          Parameters:
          +
          o - the object with which to compare
          +
          Returns:
          +
          true if this object is the same as the o argument; false otherwise.
          +
          +
          +
        • +
        • +
          +

          id

          +
          public UUID id()
          +
          Returns the value of the id record component.
          +
          +
          Returns:
          +
          the value of the id record component
          +
          +
          +
        • +
        • +
          +

          username

          +
          public String username()
          +
          Returns the value of the username record component.
          +
          +
          Returns:
          +
          the value of the username record component
          +
          +
          +
        • +
        • +
          +

          sessionToken

          +
          public String sessionToken()
          +
          Returns the value of the sessionToken record component.
          +
          +
          Returns:
          +
          the value of the sessionToken record component
          +
          +
          +
        • +
        • +
          +

          newClient

          +
          public boolean newClient()
          +
          Returns the value of the newClient record component.
          +
          +
          Returns:
          +
          the value of the newClient record component
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientManager.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientManager.html new file mode 100644 index 0000000..6aaf2c2 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientManager.html @@ -0,0 +1,515 @@ + + + + +ClientManager (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ClientManager

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.client.ClientManager
      +
      +
      +
      +
      public class ClientManager +extends Object
      +
      The client manager is responsible for managing the set of clients connected + to a server.
      +
      +
      +
        + +
      • +
        +

        Field Summary

        +
        Fields
        +
        +
        Modifier and Type
        +
        Field
        +
        Description
        +
        private final AuthenticationService
        + +
        +
        The service to use to authenticate incoming connections.
        +
        +
        private final Map<UUID,ClientThread>
        + +
        +
        The set of connected clients, mapped by their id.
        +
        +
        private final Map<UUID,ClientThread>
        + +
        +
        The set of connected pending clients, mapped by their id.
        +
        +
        private final ConcordServer
        + +
        +
        A reference to the server that this client manager is for.
        +
        +
        private final org.dizitart.no2.NitriteCollection
        + +
        +
        The nitrite collection containing user data.
        +
        +
        +
        +
      • + +
      • +
        +

        Constructor Summary

        +
        Constructors
        +
        +
        Constructor
        +
        Description
        + +
        +
        Constructs a new client manager for the given server.
        +
        +
        +
        +
      • + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        void
        +
        broadcast(nl.andrewl.concord_core.msg.Message message)
        +
        +
        Sends a message to every connected client, ignoring any channels.
        +
        +
        void
        +
        decidePendingUser(UUID userId, + boolean accepted, + String reason)
        +
        +
        Used to accept or reject a pending user's registration.
        +
        + + +
        +
        Tries to find a connected client with the given id.
        +
        +
        List<nl.andrewl.concord_core.msg.types.UserData>
        + +
         
        + + +
         
        + + +
        +
        Tries to find a pending client with the given id.
        +
        +
        List<nl.andrewl.concord_core.msg.types.UserData>
        + +
         
        +
        void
        +
        handleLogin(nl.andrewl.concord_core.msg.types.client_setup.ClientLogin login, + ClientThread clientThread)
        +
        +
        Handles an attempt by a new client to login as an existing user to the + server.
        +
        +
        void
        +
        handleLogOut(UUID clientId)
        +
        +
        De-registers a client from the server, removing them from any channel + they're currently in.
        +
        +
        void
        +
        handleRegistration(nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration registration, + ClientThread clientThread)
        +
        +
        Handles an attempt by a new client to register as a user for this server.
        +
        +
        void
        +
        handleSessionResume(nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume sessionResume, + ClientThread clientThread)
        +
        +
        Handles an attempt by a new client to login as an existing user to the + server with a session token from their previous session.
        +
        +
        private void
        + +
        +
        Standard flow for initializing a connection to a client who has already + sent their identification message, and that has been checked to be valid.
        +
        +
        private void
        +
        initializePendingClientConnection(UUID clientId, + String pendingUsername, + ClientThread clientThread)
        +
        +
        Initializes a connection to a client whose registration is pending, thus + they should simply keep their connection alive, and receive a RegistrationStatus.Type.PENDING + message, instead of a ServerWelcome.
        +
        +
        +
        +
        +
        +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          server

          +
          private final ConcordServer server
          +
          A reference to the server that this client manager is for.
          +
          +
        • +
        • +
          +

          clients

          +
          private final Map<UUID,ClientThread> clients
          +
          The set of connected clients, mapped by their id.
          +
          +
        • +
        • +
          +

          pendingClients

          +
          private final Map<UUID,ClientThread> pendingClients
          +
          The set of connected pending clients, mapped by their id.
          +
          +
        • +
        • +
          +

          userCollection

          +
          private final org.dizitart.no2.NitriteCollection userCollection
          +
          The nitrite collection containing user data.
          +
          +
        • +
        • +
          +

          authService

          +
          private final AuthenticationService authService
          +
          The service to use to authenticate incoming connections.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ClientManager

          +
          public ClientManager(ConcordServer server)
          +
          Constructs a new client manager for the given server.
          +
          +
          Parameters:
          +
          server - The server that the client manager is for.
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          handleRegistration

          +
          public void handleRegistration(nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration registration, + ClientThread clientThread) + throws InvalidIdentificationException
          +
          Handles an attempt by a new client to register as a user for this server. + If the server is set to automatically accept all new clients, the new + user is registered and the client is sent a RegistrationStatus + with the RegistrationStatus.Type.ACCEPTED value, closely followed + by a ServerWelcome message. Otherwise, the client is sent a + RegistrationStatus.Type.PENDING response, which indicates that + the client's registration is pending approval. The client can choose to + remain connected and wait for approval, or disconnect and try logging in + later.
          +
          +
          Parameters:
          +
          registration - The client's registration information.
          +
          clientThread - The client thread.
          +
          Throws:
          +
          InvalidIdentificationException - If the user's registration info is + not valid.
          +
          +
          +
        • +
        • +
          +

          handleLogin

          +
          public void handleLogin(nl.andrewl.concord_core.msg.types.client_setup.ClientLogin login, + ClientThread clientThread) + throws InvalidIdentificationException
          +
          Handles an attempt by a new client to login as an existing user to the + server. If the user's credentials are valid, then the following can + result: +
            +
          • If the user's registration is still pending, they will be sent a + RegistrationStatus.Type.PENDING response, to indicate that + their registration is still pending approval.
          • +
          • For non-pending (normal) users, they will be logged into the + server and sent a ServerWelcome message.
          • +
          +
          +
          Parameters:
          +
          login - The client's login credentials.
          +
          clientThread - The client thread managing the connection.
          +
          Throws:
          +
          InvalidIdentificationException - If the client's credentials are + incorrect.
          +
          +
          +
        • +
        • +
          +

          handleSessionResume

          +
          public void handleSessionResume(nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume sessionResume, + ClientThread clientThread) + throws InvalidIdentificationException
          +
          Handles an attempt by a new client to login as an existing user to the + server with a session token from their previous session. If the token is + valid, the user will be logged in and sent a ServerWelcome + response.
          +
          +
          Parameters:
          +
          sessionResume - The session token data.
          +
          clientThread - The client thread managing the connection.
          +
          Throws:
          +
          InvalidIdentificationException - If the token is invalid or refers + to a non-existent user.
          +
          +
          +
        • +
        • +
          +

          decidePendingUser

          +
          public void decidePendingUser(UUID userId, + boolean accepted, + String reason)
          +
          Used to accept or reject a pending user's registration. If the given user + is not pending approval, this method does nothing.
          +
          +
          Parameters:
          +
          userId - The id of the pending user.
          +
          accepted - Whether to accept or reject.
          +
          reason - The reason for rejection (or acceptance). This may be null.
          +
          +
          +
        • +
        • +
          +

          initializeClientConnection

          +
          private void initializeClientConnection(ClientConnectionData clientData, + ClientThread clientThread)
          +
          Standard flow for initializing a connection to a client who has already + sent their identification message, and that has been checked to be valid.
          +
          +
          Parameters:
          +
          clientData - The data about the client that has connected.
          +
          clientThread - The thread managing the client's connection.
          +
          +
          +
        • +
        • +
          +

          initializePendingClientConnection

          +
          private void initializePendingClientConnection(UUID clientId, + String pendingUsername, + ClientThread clientThread)
          +
          Initializes a connection to a client whose registration is pending, thus + they should simply keep their connection alive, and receive a RegistrationStatus.Type.PENDING + message, instead of a ServerWelcome.
          +
          +
          Parameters:
          +
          clientId - The id of the client.
          +
          pendingUsername - The client's username.
          +
          clientThread - The thread managing the client's connection.
          +
          +
          +
        • +
        • +
          +

          handleLogOut

          +
          public void handleLogOut(UUID clientId)
          +
          De-registers a client from the server, removing them from any channel + they're currently in.
          +
          +
          Parameters:
          +
          clientId - The id of the client to remove.
          +
          +
          +
        • +
        • +
          +

          broadcast

          +
          public void broadcast(nl.andrewl.concord_core.msg.Message message)
          +
          Sends a message to every connected client, ignoring any channels. All + clients connected to this server will receive this message.
          +
          +
          Parameters:
          +
          message - The message to send.
          +
          +
          +
        • +
        • +
          +

          getConnectedClients

          +
          public List<nl.andrewl.concord_core.msg.types.UserData> getConnectedClients()
          +
          +
          Returns:
          +
          The list of connected clients.
          +
          +
          +
        • +
        • +
          +

          getPendingClients

          +
          public List<nl.andrewl.concord_core.msg.types.UserData> getPendingClients()
          +
          +
          Returns:
          +
          The list of connected, pending clients.
          +
          +
          +
        • +
        • +
          +

          getConnectedIds

          +
          public Set<UUID> getConnectedIds()
          +
          +
          Returns:
          +
          The set of ids of all connected clients.
          +
          +
          +
        • +
        • +
          +

          getClientById

          +
          public Optional<ClientThread> getClientById(UUID id)
          +
          Tries to find a connected client with the given id.
          +
          +
          Parameters:
          +
          id - The id to look for.
          +
          Returns:
          +
          An optional client thread.
          +
          +
          +
        • +
        • +
          +

          getPendingClientById

          +
          public Optional<ClientThread> getPendingClientById(UUID id)
          +
          Tries to find a pending client with the given id.
          +
          +
          Parameters:
          +
          id - The id to look for.
          +
          Returns:
          +
          An optional client thread.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientThread.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientThread.html new file mode 100644 index 0000000..b1d614e --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/ClientThread.html @@ -0,0 +1,411 @@ + + + + +ClientThread (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ClientThread

      +
      +
      java.lang.Object +
      java.lang.Thread +
      nl.andrewl.concord_server.client.ClientThread
      +
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      Runnable
      +
      +
      +
      public class ClientThread +extends Thread
      +
      This thread is responsible for handling the connection to a single client of + a server. The client thread acts as the server's representation of a client.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          socket

          +
          private final Socket socket
          +
          +
        • +
        • +
          +

          in

          +
          private InputStream in
          +
          +
        • +
        • +
          +

          out

          +
          private OutputStream out
          +
          +
        • +
        • +
          +

          server

          +
          private final ConcordServer server
          +
          +
        • +
        • +
          +

          clientId

          +
          private UUID clientId
          +
          +
        • +
        • +
          +

          clientNickname

          +
          private String clientNickname
          +
          +
        • +
        • +
          +

          currentChannel

          +
          private Channel currentChannel
          +
          +
        • +
        • +
          +

          running

          +
          private volatile boolean running
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ClientThread

          +
          public ClientThread(Socket socket, + ConcordServer server) + throws IOException
          +
          Constructs a new client thread.
          +
          +
          Parameters:
          +
          socket - The socket to use to communicate with the client.
          +
          server - The server to which this thread belongs.
          +
          Throws:
          +
          IOException - If we cannot obtain the input and output streams from + the socket.
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          sendToClient

          +
          public void sendToClient(nl.andrewl.concord_core.msg.Message message)
          +
          Sends the given message to the client. Note that this method is + synchronized, such that multiple messages cannot be sent simultaneously.
          +
          +
          Parameters:
          +
          message - The message to send.
          +
          +
          +
        • +
        • +
          +

          sendToClient

          +
          public void sendToClient(byte[] bytes)
          +
          Sends the given bytes to the client. This is a shortcut for sendToClient(Message) + which can be used to optimize message sending in certain instances.
          +
          +
          Parameters:
          +
          bytes - The bytes to send.
          +
          +
          +
        • +
        • +
          +

          shutdown

          +
          public void shutdown()
          +
          Shuts down this client thread, closing the underlying socket and setting + running to false so that the main thread loop will + exit shortly.
          +
          +
        • +
        • +
          +

          run

          +
          public void run()
          +
          +
          Specified by:
          +
          run in interface Runnable
          +
          Overrides:
          +
          run in class Thread
          +
          +
          +
        • +
        • +
          +

          identifyClient

          +
          private boolean identifyClient()
          +
          Initial method that attempts to obtain identification information from a + newly-connected client. It is the intent that we should close the socket + if the client is not able to identify itself.
          +
          +
          Returns:
          +
          True if we were able to obtain identification from the client, or + false otherwise.
          +
          +
          +
        • +
        • +
          +

          establishEncryption

          +
          private boolean establishEncryption()
          +
          Tries to establish an encrypted connection with a client. This should be + the first thing which is called upon to interact with the client, because + it assumes that the client is also attempting to establish a secure + connection as soon as it opens its socket.
          +
          +
          Returns:
          +
          True if an encrypted connection could be established, or false + otherwise.
          +
          +
          +
        • +
        • +
          +

          toData

          +
          public nl.andrewl.concord_core.msg.types.UserData toData()
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          +
          Overrides:
          +
          toString in class Thread
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/InvalidIdentificationException.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/InvalidIdentificationException.html new file mode 100644 index 0000000..05c4911 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/InvalidIdentificationException.html @@ -0,0 +1,153 @@ + + + + +InvalidIdentificationException (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class InvalidIdentificationException

      +
      +
      java.lang.Object +
      java.lang.Throwable +
      java.lang.Exception +
      nl.andrewl.concord_server.client.InvalidIdentificationException
      +
      +
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      Serializable
      +
      +
      +
      public class InvalidIdentificationException +extends Exception
      +
      Exception that's thrown when a client's identification information is invalid.
      +
      +
      See Also:
      +
      + +
      +
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          InvalidIdentificationException

          +
          public InvalidIdentificationException(String message)
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/AuthenticationService.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/AuthenticationService.html new file mode 100644 index 0000000..abf02a7 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/AuthenticationService.html @@ -0,0 +1,89 @@ + + + + +Uses of Class nl.andrewl.concord_server.client.AuthenticationService (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.client.AuthenticationService

      +
      +
      Packages that use AuthenticationService
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientConnectionData.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientConnectionData.html new file mode 100644 index 0000000..849635f --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientConnectionData.html @@ -0,0 +1,100 @@ + + + + +Uses of Record Class nl.andrewl.concord_server.client.ClientConnectionData (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Record Class
      nl.andrewl.concord_server.client.ClientConnectionData

      +
      +
      Packages that use ClientConnectionData
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientManager.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientManager.html new file mode 100644 index 0000000..998edd0 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientManager.html @@ -0,0 +1,89 @@ + + + + +Uses of Class nl.andrewl.concord_server.client.ClientManager (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.client.ClientManager

      +
      +
      Packages that use ClientManager
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientThread.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientThread.html new file mode 100644 index 0000000..094c2bf --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/ClientThread.html @@ -0,0 +1,238 @@ + + + + +Uses of Class nl.andrewl.concord_server.client.ClientThread (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.client.ClientThread

      +
      +
      Packages that use ClientThread
      + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/InvalidIdentificationException.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/InvalidIdentificationException.html new file mode 100644 index 0000000..b90730f --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/class-use/InvalidIdentificationException.html @@ -0,0 +1,104 @@ + + + + +Uses of Class nl.andrewl.concord_server.client.InvalidIdentificationException (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.client.InvalidIdentificationException

      +
      + +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-summary.html new file mode 100644 index 0000000..25457ac --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-summary.html @@ -0,0 +1,138 @@ + + + + +nl.andrewl.concord_server.client (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server.client

      +
      +
      +
      package nl.andrewl.concord_server.client
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-tree.html new file mode 100644 index 0000000..ae96bc7 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-tree.html @@ -0,0 +1,96 @@ + + + + +nl.andrewl.concord_server.client Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server.client

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-use.html new file mode 100644 index 0000000..9a8986e --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/client/package-use.html @@ -0,0 +1,150 @@ + + + + +Uses of Package nl.andrewl.concord_server.client (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server.client

      +
      + + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/ServerConfig.ChannelConfig.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/ServerConfig.ChannelConfig.html new file mode 100644 index 0000000..34bacf5 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/ServerConfig.ChannelConfig.html @@ -0,0 +1,184 @@ + + + + +ServerConfig.ChannelConfig (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ServerConfig.ChannelConfig

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.config.ServerConfig.ChannelConfig
      +
      +
      +
      +
      Enclosing class:
      +
      ServerConfig
      +
      +
      +
      public static final class ServerConfig.ChannelConfig +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          id

          +
          private String id
          +
          +
        • +
        • +
          +

          name

          +
          private String name
          +
          +
        • +
        • +
          +

          description

          +
          private String description
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ChannelConfig

          +
          public ChannelConfig()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/ServerConfig.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/ServerConfig.html new file mode 100644 index 0000000..a26b059 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/ServerConfig.html @@ -0,0 +1,317 @@ + + + + +ServerConfig (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ServerConfig

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.config.ServerConfig
      +
      +
      +
      +
      public final class ServerConfig +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          name

          +
          private String name
          +
          +
        • +
        • +
          +

          description

          +
          private String description
          +
          +
        • +
        • +
          +

          port

          +
          private int port
          +
          +
        • +
        • +
          +

          acceptAllNewClients

          +
          private boolean acceptAllNewClients
          +
          +
        • +
        • +
          +

          chatHistoryMaxCount

          +
          private int chatHistoryMaxCount
          +
          +
        • +
        • +
          +

          chatHistoryDefaultCount

          +
          private int chatHistoryDefaultCount
          +
          +
        • +
        • +
          +

          maxMessageLength

          +
          private int maxMessageLength
          +
          +
        • +
        • +
          +

          defaultChannel

          +
          private String defaultChannel
          +
          +
        • +
        • +
          +

          channels

          +
          private List<ServerConfig.ChannelConfig> channels
          +
          +
        • +
        • +
          +

          discoveryServers

          +
          private List<String> discoveryServers
          +
          +
        • +
        • +
          +

          filePath

          +
          private transient Path filePath
          +
          The path at which this config is stored.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ServerConfig

          +
          public ServerConfig()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        + +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/class-use/ServerConfig.ChannelConfig.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/class-use/ServerConfig.ChannelConfig.html new file mode 100644 index 0000000..d70e12c --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/class-use/ServerConfig.ChannelConfig.html @@ -0,0 +1,87 @@ + + + + +Uses of Class nl.andrewl.concord_server.config.ServerConfig.ChannelConfig (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.config.ServerConfig.ChannelConfig

      +
      +
      Packages that use ServerConfig.ChannelConfig
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/class-use/ServerConfig.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/class-use/ServerConfig.html new file mode 100644 index 0000000..a574fe1 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/class-use/ServerConfig.html @@ -0,0 +1,118 @@ + + + + +Uses of Class nl.andrewl.concord_server.config.ServerConfig (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.config.ServerConfig

      +
      +
      Packages that use ServerConfig
      + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-summary.html new file mode 100644 index 0000000..07bcc63 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-summary.html @@ -0,0 +1,111 @@ + + + + +nl.andrewl.concord_server.config (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server.config

      +
      +
      +
      package nl.andrewl.concord_server.config
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-tree.html new file mode 100644 index 0000000..005f3e9 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-tree.html @@ -0,0 +1,77 @@ + + + + +nl.andrewl.concord_server.config Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server.config

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-use.html new file mode 100644 index 0000000..27b1a31 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/config/package-use.html @@ -0,0 +1,99 @@ + + + + +Uses of Package nl.andrewl.concord_server.config (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server.config

      +
      + + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChannelMoveHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChannelMoveHandler.html new file mode 100644 index 0000000..a7bdcbd --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChannelMoveHandler.html @@ -0,0 +1,181 @@ + + + + +ChannelMoveHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ChannelMoveHandler

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.event.ChannelMoveHandler
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      MessageHandler<nl.andrewl.concord_core.msg.types.channel.MoveToChannel>
      +
      +
      +
      public class ChannelMoveHandler +extends Object +implements MessageHandler<nl.andrewl.concord_core.msg.types.channel.MoveToChannel>
      +
      Handles client requests to move to another channel. We first check if the id + which the client sent refers to a channel, in which case we move them to that + channel. Otherwise, we look for a client with that id, and try to move the + requester into a private channel with them.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ChannelMoveHandler

          +
          public ChannelMoveHandler()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          handle

          +
          public void handle(nl.andrewl.concord_core.msg.types.channel.MoveToChannel msg, + ClientThread client, + ConcordServer server)
          +
          +
          Specified by:
          +
          handle in interface MessageHandler<nl.andrewl.concord_core.msg.types.channel.MoveToChannel>
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChatHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChatHandler.html new file mode 100644 index 0000000..4a0c20c --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChatHandler.html @@ -0,0 +1,183 @@ + + + + +ChatHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ChatHandler

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.event.ChatHandler
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      MessageHandler<nl.andrewl.concord_core.msg.types.chat.Chat>
      +
      +
      +
      public class ChatHandler +extends Object +implements MessageHandler<nl.andrewl.concord_core.msg.types.chat.Chat>
      +
      This handler is responsible for taking incoming chat messages and saving them + to the channel's message collection, and then relaying the new message to all + clients in the channel.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ChatHandler

          +
          public ChatHandler()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        + +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChatHistoryRequestHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChatHistoryRequestHandler.html new file mode 100644 index 0000000..678cc9d --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/ChatHistoryRequestHandler.html @@ -0,0 +1,273 @@ + + + + +ChatHistoryRequestHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class ChatHistoryRequestHandler

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      MessageHandler<nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest>
      +
      +
      +
      public class ChatHistoryRequestHandler +extends Object +implements MessageHandler<nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest>
      +
      Handles client requests for sections of chat history for a particular channel.
      +
      +
      +
        + +
      • +
        +

        Constructor Summary

        +
        Constructors
        +
        +
        Constructor
        +
        Description
        + +
         
        +
        +
        +
      • + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        private Long
        +
        getOrDefault(Map<String,String> params, + String key, + Long defaultValue)
        +
        +
        Helper method to get a long value or fall back to a default.
        +
        +
        private nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse
        +
        getResponse(Channel channel, + long count, + Long from, + Long to)
        +
        +
        Gets a response for a standard chat history request, using a standard set + of parameters.
        +
        +
        void
        +
        handle(nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest msg, + ClientThread client, + ConcordServer server)
        +
         
        +
        private void
        +
        handleIdRequest(ClientThread client, + Channel channel, + String id)
        +
        +
        Handles a request for a single message from a channel.
        +
        +
        private nl.andrewl.concord_core.msg.types.chat.Chat
        +
        read(org.dizitart.no2.Document doc)
        +
        +
        Helper method to read a Chat from a document retrieved from a + collection.
        +
        +
        +
        +
        +
        +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ChatHistoryRequestHandler

          +
          public ChatHistoryRequestHandler()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          handle

          +
          public void handle(nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest msg, + ClientThread client, + ConcordServer server)
          +
          +
          Specified by:
          +
          handle in interface MessageHandler<nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest>
          +
          +
          +
        • +
        • +
          +

          handleIdRequest

          +
          private void handleIdRequest(ClientThread client, + Channel channel, + String id)
          +
          Handles a request for a single message from a channel.
          +
          +
          Parameters:
          +
          client - The client who's requesting the data.
          +
          channel - The channel in which to search for the message.
          +
          id - The id of the message.
          +
          +
          +
        • +
        • +
          +

          getResponse

          +
          private nl.andrewl.concord_core.msg.types.chat.ChatHistoryResponse getResponse(Channel channel, + long count, + Long from, + Long to)
          +
          Gets a response for a standard chat history request, using a standard set + of parameters.
          +
          +
          Parameters:
          +
          channel - The channel to get chat history from.
          +
          count - The number of messages to retrieve.
          +
          from - If not null, only include messages made after this timestamp.
          +
          to - If not null, only include messages made before this timestamp.
          +
          Returns:
          +
          A chat history response.
          +
          +
          +
        • +
        • +
          +

          read

          +
          private nl.andrewl.concord_core.msg.types.chat.Chat read(org.dizitart.no2.Document doc)
          +
          Helper method to read a Chat from a document retrieved from a + collection.
          +
          +
          Parameters:
          +
          doc - The document to read.
          +
          Returns:
          +
          The chat that was read.
          +
          +
          +
        • +
        • +
          +

          getOrDefault

          +
          private Long getOrDefault(Map<String,String> params, + String key, + Long defaultValue)
          +
          Helper method to get a long value or fall back to a default.
          +
          +
          Parameters:
          +
          params - The parameters to check.
          +
          key - The key to get the value for.
          +
          defaultValue - The default value to return if no value exists.
          +
          Returns:
          +
          The value that was found, or the default value.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/EventManager.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/EventManager.html new file mode 100644 index 0000000..9041fda --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/EventManager.html @@ -0,0 +1,226 @@ + + + + +EventManager (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class EventManager

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.event.EventManager
      +
      +
      +
      +
      public class EventManager +extends Object
      +
      The event manager is responsible for the server's ability to respond to + various client requests.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          messageHandlers

          +
          private final Map<Class<? extends nl.andrewl.concord_core.msg.Message>,MessageHandler<?>> messageHandlers
          +
          +
        • +
        • +
          +

          server

          +
          private final ConcordServer server
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          EventManager

          +
          public EventManager(ConcordServer server)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          handle

          +
          public <T extends nl.andrewl.concord_core.msg.Message> +void handle(T message, + ClientThread client)
          +
          Handles a new message that was sent from a client. Tries to find an + appropriate handler for the message, and if one is found, calls the + MessageHandler.handle(Message, ClientThread, ConcordServer) + method on it. +

          + Note that it is expected that client threads will invoke this method + during their ClientThread.run() method, so concurrent + invocation is expected. +

          +
          +
          Type Parameters:
          +
          T - The type of message.
          +
          Parameters:
          +
          message - The message that was sent by a client.
          +
          client - The client thread that is used for communicating with the + client.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/MessageHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/MessageHandler.html new file mode 100644 index 0000000..98d093c --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/MessageHandler.html @@ -0,0 +1,149 @@ + + + + +MessageHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Interface MessageHandler<T extends nl.andrewl.concord_core.msg.Message>

      +
      +
      +
      +
      Type Parameters:
      +
      T - The type of message to be handled.
      +
      +
      +
      All Known Implementing Classes:
      +
      ChannelMoveHandler, ChatHandler, ChatHistoryRequestHandler
      +
      +
      +
      public interface MessageHandler<T extends nl.andrewl.concord_core.msg.Message>
      +
      Defines a component which can handle messages of a certain type which were + received from a client.
      +
      +
      +
        + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        void
        +
        handle(T msg, + ClientThread client, + ConcordServer server)
        +
         
        +
        +
        +
        +
        +
      • +
      +
      +
      + +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChannelMoveHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChannelMoveHandler.html new file mode 100644 index 0000000..bc62f9e --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChannelMoveHandler.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.event.ChannelMoveHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.event.ChannelMoveHandler

      +
      +No usage of nl.andrewl.concord_server.event.ChannelMoveHandler
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChatHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChatHandler.html new file mode 100644 index 0000000..8aa9e9a --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChatHandler.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.event.ChatHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.event.ChatHandler

      +
      +No usage of nl.andrewl.concord_server.event.ChatHandler
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChatHistoryRequestHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChatHistoryRequestHandler.html new file mode 100644 index 0000000..8831897 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/ChatHistoryRequestHandler.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.event.ChatHistoryRequestHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.event.ChatHistoryRequestHandler

      +
      +No usage of nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/EventManager.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/EventManager.html new file mode 100644 index 0000000..07fd88d --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/EventManager.html @@ -0,0 +1,89 @@ + + + + +Uses of Class nl.andrewl.concord_server.event.EventManager (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.event.EventManager

      +
      +
      Packages that use EventManager
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/MessageHandler.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/MessageHandler.html new file mode 100644 index 0000000..88bdf94 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/class-use/MessageHandler.html @@ -0,0 +1,110 @@ + + + + +Uses of Interface nl.andrewl.concord_server.event.MessageHandler (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Interface
      nl.andrewl.concord_server.event.MessageHandler

      +
      +
      Packages that use MessageHandler
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-summary.html new file mode 100644 index 0000000..52d79d1 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-summary.html @@ -0,0 +1,137 @@ + + + + +nl.andrewl.concord_server.event (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server.event

      +
      +
      +
      package nl.andrewl.concord_server.event
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-tree.html new file mode 100644 index 0000000..841c12a --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-tree.html @@ -0,0 +1,85 @@ + + + + +nl.andrewl.concord_server.event Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server.event

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +

      Interface Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-use.html new file mode 100644 index 0000000..831838f --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/event/package-use.html @@ -0,0 +1,103 @@ + + + + +Uses of Package nl.andrewl.concord_server.event (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server.event

      +
      + + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-summary.html new file mode 100644 index 0000000..77fb635 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-summary.html @@ -0,0 +1,116 @@ + + + + +nl.andrewl.concord_server (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server

      +
      +
      +
      package nl.andrewl.concord_server
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-tree.html new file mode 100644 index 0000000..f371024 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-tree.html @@ -0,0 +1,77 @@ + + + + +nl.andrewl.concord_server Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-use.html new file mode 100644 index 0000000..11a4fa5 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/package-use.html @@ -0,0 +1,162 @@ + + + + +Uses of Package nl.andrewl.concord_server (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server

      +
      +
      Packages that use nl.andrewl.concord_server
      + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/CollectionUtils.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/CollectionUtils.html new file mode 100644 index 0000000..3781fef --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/CollectionUtils.html @@ -0,0 +1,179 @@ + + + + +CollectionUtils (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class CollectionUtils

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.util.CollectionUtils
      +
      +
      +
      +
      public class CollectionUtils +extends Object
      +
      +
      +
        + +
      • +
        +

        Constructor Summary

        +
        Constructors
        +
        +
        Constructor
        +
        Description
        + +
         
        +
        +
        +
      • + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        static void
        +
        ensureIndexes(org.dizitart.no2.NitriteCollection collection, + Map<String,org.dizitart.no2.IndexType> indexMap)
        +
        +
        Ensures that the given nitrite collection has exactly the given set of + indexes.
        +
        +
        +
        +
        +
        +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          CollectionUtils

          +
          public CollectionUtils()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          ensureIndexes

          +
          public static void ensureIndexes(org.dizitart.no2.NitriteCollection collection, + Map<String,org.dizitart.no2.IndexType> indexMap)
          +
          Ensures that the given nitrite collection has exactly the given set of + indexes. It will remove any non-conforming indexes, and create new ones + as necessary.
          +
          +
          Parameters:
          +
          collection - The collection to operate on.
          +
          indexMap - A mapping containing keys referring to fields, and values + that represent the type of index that should be on that + field.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/IdProvider.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/IdProvider.html new file mode 100644 index 0000000..e6f9745 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/IdProvider.html @@ -0,0 +1,134 @@ + + + + +IdProvider (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Interface IdProvider

      +
      +
      +
      +
      All Known Implementing Classes:
      +
      UUIDProvider
      +
      +
      +
      public interface IdProvider
      +
      +
      +
        + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        + + +
         
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          newId

          +
          UUID newId()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/StringUtils.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/StringUtils.html new file mode 100644 index 0000000..b46323f --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/StringUtils.html @@ -0,0 +1,164 @@ + + + + +StringUtils (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class StringUtils

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.util.StringUtils
      +
      +
      +
      +
      public class StringUtils +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          StringUtils

          +
          public StringUtils()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          random

          +
          public static String random(int length)
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/UUIDProvider.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/UUIDProvider.html new file mode 100644 index 0000000..f899ba2 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/UUIDProvider.html @@ -0,0 +1,173 @@ + + + + +UUIDProvider (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + + +

      Class UUIDProvider

      +
      +
      java.lang.Object +
      nl.andrewl.concord_server.util.UUIDProvider
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      IdProvider
      +
      +
      +
      public class UUIDProvider +extends Object +implements IdProvider
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          UUIDProvider

          +
          public UUIDProvider()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        + +
        +
      • +
      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/CollectionUtils.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/CollectionUtils.html new file mode 100644 index 0000000..b6d5824 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/CollectionUtils.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.util.CollectionUtils (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.util.CollectionUtils

      +
      +No usage of nl.andrewl.concord_server.util.CollectionUtils
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/IdProvider.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/IdProvider.html new file mode 100644 index 0000000..417adca --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/IdProvider.html @@ -0,0 +1,122 @@ + + + + +Uses of Interface nl.andrewl.concord_server.util.IdProvider (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Interface
      nl.andrewl.concord_server.util.IdProvider

      +
      +
      Packages that use IdProvider
      + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/StringUtils.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/StringUtils.html new file mode 100644 index 0000000..396d6f7 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/StringUtils.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.util.StringUtils (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.util.StringUtils

      +
      +No usage of nl.andrewl.concord_server.util.StringUtils
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/UUIDProvider.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/UUIDProvider.html new file mode 100644 index 0000000..5ecd7f8 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/class-use/UUIDProvider.html @@ -0,0 +1,62 @@ + + + + +Uses of Class nl.andrewl.concord_server.util.UUIDProvider (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      nl.andrewl.concord_server.util.UUIDProvider

      +
      +No usage of nl.andrewl.concord_server.util.UUIDProvider
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-summary.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-summary.html new file mode 100644 index 0000000..9284301 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-summary.html @@ -0,0 +1,121 @@ + + + + +nl.andrewl.concord_server.util (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      + +

      Package nl.andrewl.concord_server.util

      +
      +
      +
      package nl.andrewl.concord_server.util
      +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-tree.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-tree.html new file mode 100644 index 0000000..302e862 --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-tree.html @@ -0,0 +1,84 @@ + + + + +nl.andrewl.concord_server.util Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package nl.andrewl.concord_server.util

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +

      Interface Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-use.html b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-use.html new file mode 100644 index 0000000..09e74bc --- /dev/null +++ b/docs/javadoc/server/concord_server/nl/andrewl/concord_server/util/package-use.html @@ -0,0 +1,110 @@ + + + + +Uses of Package nl.andrewl.concord_server.util (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      nl.andrewl.concord_server.util

      +
      + + +
      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/element-list b/docs/javadoc/server/element-list new file mode 100644 index 0000000..e21ecfa --- /dev/null +++ b/docs/javadoc/server/element-list @@ -0,0 +1,9 @@ +module:concord_server +nl.andrewl.concord_server +nl.andrewl.concord_server.channel +nl.andrewl.concord_server.cli +nl.andrewl.concord_server.cli.command +nl.andrewl.concord_server.client +nl.andrewl.concord_server.config +nl.andrewl.concord_server.event +nl.andrewl.concord_server.util diff --git a/docs/javadoc/server/help-doc.html b/docs/javadoc/server/help-doc.html new file mode 100644 index 0000000..65a62ca --- /dev/null +++ b/docs/javadoc/server/help-doc.html @@ -0,0 +1,196 @@ + + + + +API Help (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +

      JavaDoc Help

      + +
      +
      +

      Navigation

      +Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
      +
      +
      +

      Kinds of Pages

      +The following sections describe the different kinds of pages in this collection. +
      +

      Module

      +

      Each module has a page that contains a list of its packages, dependencies on other modules, and services, with a summary for each. These pages may contain the following categories:

      +
        +
      • Packages
      • +
      • Modules
      • +
      • Services
      • +
      +
      +
      +

      Package

      +

      Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

      +
        +
      • Interfaces
      • +
      • Classes
      • +
      • Enum Classes
      • +
      • Exceptions
      • +
      • Errors
      • +
      • Annotation Interfaces
      • +
      +
      +
      +

      Class or Interface

      +

      Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

      +
        +
      • Class Inheritance Diagram
      • +
      • Direct Subclasses
      • +
      • All Known Subinterfaces
      • +
      • All Known Implementing Classes
      • +
      • Class or Interface Declaration
      • +
      • Class or Interface Description
      • +
      +
      +
        +
      • Nested Class Summary
      • +
      • Enum Constant Summary
      • +
      • Field Summary
      • +
      • Property Summary
      • +
      • Constructor Summary
      • +
      • Method Summary
      • +
      • Required Element Summary
      • +
      • Optional Element Summary
      • +
      +
      +
        +
      • Enum Constant Details
      • +
      • Field Details
      • +
      • Property Details
      • +
      • Constructor Details
      • +
      • Method Details
      • +
      • Element Details
      • +
      +

      Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

      +

      The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

      +
      +
      +

      Other Files

      +

      Packages and modules may contain pages with additional information related to the declarations nearby.

      +
      +
      +

      Use

      +

      Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

      +
      +
      +

      Tree (Class Hierarchy)

      +

      There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

      +
        +
      • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
      • +
      • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
      • +
      +
      +
      +

      Serialized Form

      +

      Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

      +
      +
      +

      All Packages

      +

      The All Packages page contains an alphabetic index of all packages contained in the documentation.

      +
      +
      +

      All Classes and Interfaces

      +

      The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

      +
      +
      +

      Index

      +

      The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

      +
      +
      +
      +This help file applies to API documentation generated by the standard doclet.
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/index-all.html b/docs/javadoc/server/index-all.html new file mode 100644 index 0000000..dc243cc --- /dev/null +++ b/docs/javadoc/server/index-all.html @@ -0,0 +1,729 @@ + + + + +Index (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M N O P R S T U 
      All Classes and Interfaces|All Packages|Serialized Form +

      A

      +
      +
      acceptAllNewClients - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      addChannel(Channel) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      addChannel(ConcordServer, String[]) - Method in class nl.andrewl.concord_server.cli.command.ChannelCommand
      +
       
      +
      addClient(ClientThread) - Method in class nl.andrewl.concord_server.channel.Channel
      +
      +
      Adds a client to this channel.
      +
      +
      AuthenticationService - Class in nl.andrewl.concord_server.client
      +
      +
      This authentication service provides support for managing the client's + authentication status, such as registering new clients, generating tokens, + and logging in.
      +
      +
      AuthenticationService(ConcordServer, NitriteCollection) - Constructor for class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      authService - Variable in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      The service to use to authenticate incoming connections.
      +
      +
      +

      B

      +
      +
      broadcast(Message) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Sends a message to every connected client, ignoring any channels.
      +
      +
      +

      C

      +
      +
      Channel - Class in nl.andrewl.concord_server.channel
      +
      +
      Represents a single communication area in which messages are sent by clients + and received by all connected clients.
      +
      +
      Channel(ConcordServer, UUID, String) - Constructor for class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      ChannelCommand - Class in nl.andrewl.concord_server.cli.command
      +
      +
      Command for interacting with channels on the server.
      +
      +
      ChannelCommand() - Constructor for class nl.andrewl.concord_server.cli.command.ChannelCommand
      +
       
      +
      ChannelConfig() - Constructor for class nl.andrewl.concord_server.config.ServerConfig.ChannelConfig
      +
       
      +
      channelIdMap - Variable in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      channelManager - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      Manager that handles the collection of channels in this server.
      +
      +
      ChannelManager - Class in nl.andrewl.concord_server.channel
      +
      +
      This manager is responsible for keeping track of all the channels in the + server, and controlling modifications to them.
      +
      +
      ChannelManager(ConcordServer) - Constructor for class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      ChannelMoveHandler - Class in nl.andrewl.concord_server.event
      +
      +
      Handles client requests to move to another channel.
      +
      +
      ChannelMoveHandler() - Constructor for class nl.andrewl.concord_server.event.ChannelMoveHandler
      +
       
      +
      channelNameMap - Variable in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      channels - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      ChatHandler - Class in nl.andrewl.concord_server.event
      +
      +
      This handler is responsible for taking incoming chat messages and saving them + to the channel's message collection, and then relaying the new message to all + clients in the channel.
      +
      +
      ChatHandler() - Constructor for class nl.andrewl.concord_server.event.ChatHandler
      +
       
      +
      chatHistoryDefaultCount - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      chatHistoryMaxCount - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      ChatHistoryRequestHandler - Class in nl.andrewl.concord_server.event
      +
      +
      Handles client requests for sections of chat history for a particular channel.
      +
      +
      ChatHistoryRequestHandler() - Constructor for class nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
       
      +
      ClientConnectionData - Record Class in nl.andrewl.concord_server.client
      +
      +
      Some common data that's used when dealing with a client who has just joined + the server.
      +
      +
      ClientConnectionData(UUID, String, String, boolean) - Constructor for record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Creates an instance of a ClientConnectionData record class.
      +
      +
      clientId - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      clientManager - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      Manager that handles the collection of clients connected to this server.
      +
      +
      ClientManager - Class in nl.andrewl.concord_server.client
      +
      +
      The client manager is responsible for managing the set of clients connected + to a server.
      +
      +
      ClientManager(ConcordServer) - Constructor for class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Constructs a new client manager for the given server.
      +
      +
      clientNickname - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      clients - Variable in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      The set of connected clients, mapped by their id.
      +
      +
      ClientThread - Class in nl.andrewl.concord_server.client
      +
      +
      This thread is responsible for handling the connection to a single client of + a server.
      +
      +
      ClientThread(Socket, ConcordServer) - Constructor for class nl.andrewl.concord_server.client.ClientThread
      +
      +
      Constructs a new client thread.
      +
      +
      CollectionUtils - Class in nl.andrewl.concord_server.util
      +
       
      +
      CollectionUtils() - Constructor for class nl.andrewl.concord_server.util.CollectionUtils
      +
       
      +
      commands - Variable in class nl.andrewl.concord_server.cli.ServerCli
      +
       
      +
      compareTo(Channel) - Method in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      concord_server - module concord_server
      +
       
      +
      ConcordServer - Class in nl.andrewl.concord_server
      +
      +
      The main server implementation, which handles accepting new clients.
      +
      +
      ConcordServer() - Constructor for class nl.andrewl.concord_server.ConcordServer
      +
       
      +
      config - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      Server configuration data.
      +
      +
      config - Variable in class nl.andrewl.concord_server.DiscoveryServerPublisher
      +
       
      +
      CONFIG_FILE - Static variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      The path to this server's configuration file.
      +
      +
      connectedClients - Variable in class nl.andrewl.concord_server.channel.Channel
      +
      +
      The set of clients that are connected to this channel.
      +
      +
      currentChannel - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      +

      D

      +
      +
      DATABASE_FILE - Static variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      The path to this server's database file.
      +
      +
      db - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      The database that contains all messages and other server information.
      +
      +
      decidePendingUser(UUID, boolean, String) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Used to accept or reject a pending user's registration.
      +
      +
      defaultChannel - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      description - Variable in class nl.andrewl.concord_server.config.ServerConfig.ChannelConfig
      +
       
      +
      description - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      discoveryServerPublisher - Variable in class nl.andrewl.concord_server.ConcordServer
      +
       
      +
      DiscoveryServerPublisher - Class in nl.andrewl.concord_server
      +
      +
      This component is responsible for publishing the server's metadata to any + discovery servers that have been defined in the server's configuration file.
      +
      +
      DiscoveryServerPublisher(ServerConfig) - Constructor for class nl.andrewl.concord_server.DiscoveryServerPublisher
      +
       
      +
      discoveryServers - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      +

      E

      +
      +
      ensureIndexes(NitriteCollection, Map<String, IndexType>) - Static method in class nl.andrewl.concord_server.util.CollectionUtils
      +
      +
      Ensures that the given nitrite collection has exactly the given set of + indexes.
      +
      +
      equals(Object) - Method in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      equals(Object) - Method in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Indicates whether some other object is "equal to" this one.
      +
      +
      establishEncryption() - Method in class nl.andrewl.concord_server.client.ClientThread
      +
      +
      Tries to establish an encrypted connection with a client.
      +
      +
      eventManager - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      Manager that handles incoming messages and events by clients.
      +
      +
      EventManager - Class in nl.andrewl.concord_server.event
      +
      +
      The event manager is responsible for the server's ability to respond to + various client requests.
      +
      +
      EventManager(ConcordServer) - Constructor for class nl.andrewl.concord_server.event.EventManager
      +
       
      +
      executorService - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      A general-purpose executor service that can be used to submit async tasks.
      +
      +
      +

      F

      +
      +
      filePath - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
      +
      The path at which this config is stored.
      +
      +
      findAndAuthenticateUser(ClientLogin) - Method in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      findAndAuthenticateUser(ClientSessionResume) - Method in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      +

      G

      +
      +
      generateSessionToken(UUID) - Method in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      getAsTag() - Method in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      getChannelById(UUID) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      getChannelByName(String) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      getChannels() - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      getClientById(UUID) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Tries to find a connected client with the given id.
      +
      +
      getConnectedClients() - Method in class nl.andrewl.concord_server.client.ClientManager
      +
       
      +
      getConnectedIds() - Method in class nl.andrewl.concord_server.client.ClientManager
      +
       
      +
      getDefaultChannel() - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      getMetaData() - Method in class nl.andrewl.concord_server.ConcordServer
      +
       
      +
      getOrDefault(Map<String, String>, String, Long) - Method in class nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
      +
      Helper method to get a long value or fall back to a default.
      +
      +
      getPendingClientById(UUID) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Tries to find a pending client with the given id.
      +
      +
      getPendingClients() - Method in class nl.andrewl.concord_server.client.ClientManager
      +
       
      +
      getPrivateChannel(Set<UUID>) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
      +
      Gets or creates a private channel for the given client ids to be able to + communicate together.
      +
      +
      getPrivateChannel(UUID, UUID) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
      +
      Gets a private channel, given the id of a client who is part of the + channel, and the id of the channel.
      +
      +
      getPrivateChannelFromDatabase(Set<UUID>) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
      +
      Gets and instantiates a private channel from information stored in the + "private-channels" collection of the database, or creates it if it does + not exist yet.
      +
      +
      getResponse(Channel, long, Long, Long) - Method in class nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
      +
      Gets a response for a standard chat history request, using a standard set + of parameters.
      +
      +
      getUserData() - Method in class nl.andrewl.concord_server.channel.Channel
      +
      +
      Gets a list of information about each user in this channel.
      +
      +
      +

      H

      +
      +
      handle(MoveToChannel, ClientThread, ConcordServer) - Method in class nl.andrewl.concord_server.event.ChannelMoveHandler
      +
       
      +
      handle(ChatHistoryRequest, ClientThread, ConcordServer) - Method in class nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
       
      +
      handle(Chat, ClientThread, ConcordServer) - Method in class nl.andrewl.concord_server.event.ChatHandler
      +
       
      +
      handle(ConcordServer, String[]) - Method in class nl.andrewl.concord_server.cli.command.ChannelCommand
      +
       
      +
      handle(ConcordServer, String[]) - Method in class nl.andrewl.concord_server.cli.command.ListClientsCommand
      +
       
      +
      handle(ConcordServer, String[]) - Method in class nl.andrewl.concord_server.cli.command.StopCommand
      +
       
      +
      handle(ConcordServer, String[]) - Method in interface nl.andrewl.concord_server.cli.ServerCliCommand
      +
       
      +
      handle(T, ClientThread) - Method in class nl.andrewl.concord_server.event.EventManager
      +
      +
      Handles a new message that was sent from a client.
      +
      +
      handle(T, ClientThread, ConcordServer) - Method in interface nl.andrewl.concord_server.event.MessageHandler
      +
       
      +
      handleIdRequest(ClientThread, Channel, String) - Method in class nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
      +
      Handles a request for a single message from a channel.
      +
      +
      handleLogin(ClientLogin, ClientThread) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Handles an attempt by a new client to login as an existing user to the + server.
      +
      +
      handleLogOut(UUID) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      De-registers a client from the server, removing them from any channel + they're currently in.
      +
      +
      handleRegistration(ClientRegistration, ClientThread) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Handles an attempt by a new client to register as a user for this server.
      +
      +
      handleSessionResume(ClientSessionResume, ClientThread) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Handles an attempt by a new client to login as an existing user to the + server with a session token from their previous session.
      +
      +
      hashCode() - Method in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      hashCode() - Method in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Returns a hash code value for this object.
      +
      +
      httpClient - Variable in class nl.andrewl.concord_server.DiscoveryServerPublisher
      +
       
      +
      +

      I

      +
      +
      id - Variable in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      id - Variable in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      The field for the id record component.
      +
      +
      id - Variable in class nl.andrewl.concord_server.config.ServerConfig.ChannelConfig
      +
       
      +
      id() - Method in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Returns the value of the id record component.
      +
      +
      identifyClient() - Method in class nl.andrewl.concord_server.client.ClientThread
      +
      +
      Initial method that attempts to obtain identification information from a + newly-connected client.
      +
      +
      idProvider - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      The component that generates new user and channel ids.
      +
      +
      IdProvider - Interface in nl.andrewl.concord_server.util
      +
       
      +
      in - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      initializeClientConnection(ClientConnectionData, ClientThread) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Standard flow for initializing a connection to a client who has already + sent their identification message, and that has been checked to be valid.
      +
      +
      initializePendingClientConnection(UUID, String, ClientThread) - Method in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      Initializes a connection to a client whose registration is pending, thus + they should simply keep their connection alive, and receive a RegistrationStatus.Type.PENDING + message, instead of a ServerWelcome.
      +
      +
      InvalidIdentificationException - Exception in nl.andrewl.concord_server.client
      +
      +
      Exception that's thrown when a client's identification information is invalid.
      +
      +
      InvalidIdentificationException(String) - Constructor for exception nl.andrewl.concord_server.client.InvalidIdentificationException
      +
       
      +
      isRunning() - Method in class nl.andrewl.concord_server.ConcordServer
      +
       
      +
      +

      L

      +
      +
      listChannels(ConcordServer) - Method in class nl.andrewl.concord_server.cli.command.ChannelCommand
      +
       
      +
      ListClientsCommand - Class in nl.andrewl.concord_server.cli.command
      +
      +
      This command shows a list of all clients that are currently connected to the server.
      +
      +
      ListClientsCommand() - Constructor for class nl.andrewl.concord_server.cli.command.ListClientsCommand
      +
       
      +
      loadOrCreate(Path, IdProvider) - Static method in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      +

      M

      +
      +
      main(String[]) - Static method in class nl.andrewl.concord_server.ConcordServer
      +
       
      +
      mapper - Variable in class nl.andrewl.concord_server.DiscoveryServerPublisher
      +
       
      +
      maxMessageLength - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      messageCollection - Variable in class nl.andrewl.concord_server.channel.Channel
      +
      +
      A document collection which holds all messages created in this channel, + indexed on id, timestamp, message, and sender's username.
      +
      +
      MessageHandler<T extends nl.andrewl.concord_core.msg.Message> - Interface in nl.andrewl.concord_server.event
      +
      +
      Defines a component which can handle messages of a certain type which were + received from a client.
      +
      +
      messageHandlers - Variable in class nl.andrewl.concord_server.event.EventManager
      +
       
      +
      moveToChannel(ClientThread, Channel) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
      +
      Moves a client to the given channel.
      +
      +
      +

      N

      +
      +
      name - Variable in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      name - Variable in class nl.andrewl.concord_server.config.ServerConfig.ChannelConfig
      +
       
      +
      name - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      newClient - Variable in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      The field for the newClient record component.
      +
      +
      newClient() - Method in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Returns the value of the newClient record component.
      +
      +
      newId() - Method in interface nl.andrewl.concord_server.util.IdProvider
      +
       
      +
      newId() - Method in class nl.andrewl.concord_server.util.UUIDProvider
      +
       
      +
      nl.andrewl.concord_server - package nl.andrewl.concord_server
      +
       
      +
      nl.andrewl.concord_server.channel - package nl.andrewl.concord_server.channel
      +
       
      +
      nl.andrewl.concord_server.cli - package nl.andrewl.concord_server.cli
      +
       
      +
      nl.andrewl.concord_server.cli.command - package nl.andrewl.concord_server.cli.command
      +
       
      +
      nl.andrewl.concord_server.client - package nl.andrewl.concord_server.client
      +
       
      +
      nl.andrewl.concord_server.config - package nl.andrewl.concord_server.config
      +
       
      +
      nl.andrewl.concord_server.event - package nl.andrewl.concord_server.event
      +
       
      +
      nl.andrewl.concord_server.util - package nl.andrewl.concord_server.util
      +
       
      +
      +

      O

      +
      +
      out - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      +

      P

      +
      +
      pendingClients - Variable in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      The set of connected pending clients, mapped by their id.
      +
      +
      port - Variable in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      privateChannelCollection - Variable in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      privateChannels - Variable in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      publish() - Method in class nl.andrewl.concord_server.DiscoveryServerPublisher
      +
       
      +
      +

      R

      +
      +
      random(int) - Static method in class nl.andrewl.concord_server.util.StringUtils
      +
       
      +
      read(Document) - Method in class nl.andrewl.concord_server.event.ChatHistoryRequestHandler
      +
      +
      Helper method to read a Chat from a document retrieved from a + collection.
      +
      +
      registerNewClient(ClientRegistration) - Method in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      registerPendingClient(ClientRegistration) - Method in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      removeChannel(Channel) - Method in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      removeChannel(ConcordServer, String[]) - Method in class nl.andrewl.concord_server.cli.command.ChannelCommand
      +
       
      +
      removeClient(ClientThread) - Method in class nl.andrewl.concord_server.channel.Channel
      +
      +
      Removes a client from this channel.
      +
      +
      removeExpiredSessionTokens() - Method in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      run() - Method in class nl.andrewl.concord_server.cli.ServerCli
      +
       
      +
      run() - Method in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      run() - Method in class nl.andrewl.concord_server.ConcordServer
      +
       
      +
      running - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      running - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      Running flag that's used to signal this server's thread to shutdown.
      +
      +
      +

      S

      +
      +
      save() - Method in class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      scheduledExecutorService - Variable in class nl.andrewl.concord_server.ConcordServer
      +
       
      +
      sendMessage(Message) - Method in class nl.andrewl.concord_server.channel.Channel
      +
      +
      Sends a message to all clients that are currently connected to this + channel.
      +
      +
      sendToClient(byte[]) - Method in class nl.andrewl.concord_server.client.ClientThread
      +
      +
      Sends the given bytes to the client.
      +
      +
      sendToClient(Message) - Method in class nl.andrewl.concord_server.client.ClientThread
      +
      +
      Sends the given message to the client.
      +
      +
      serializer - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      A utility serializer that's mostly used when preparing a message to + broadcast to a set of users, which is more efficient than having each + individual client thread serialize the same message before sending it.
      +
      +
      server - Variable in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      server - Variable in class nl.andrewl.concord_server.channel.ChannelManager
      +
       
      +
      server - Variable in class nl.andrewl.concord_server.cli.ServerCli
      +
       
      +
      server - Variable in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      server - Variable in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      A reference to the server that this client manager is for.
      +
      +
      server - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      server - Variable in class nl.andrewl.concord_server.event.EventManager
      +
       
      +
      ServerCli - Class in nl.andrewl.concord_server.cli
      +
      +
      Simple command-line interface that's available when running the server.
      +
      +
      ServerCli(ConcordServer) - Constructor for class nl.andrewl.concord_server.cli.ServerCli
      +
       
      +
      ServerCliCommand - Interface in nl.andrewl.concord_server.cli
      +
       
      +
      ServerConfig - Class in nl.andrewl.concord_server.config
      +
       
      +
      ServerConfig() - Constructor for class nl.andrewl.concord_server.config.ServerConfig
      +
       
      +
      ServerConfig.ChannelConfig - Class in nl.andrewl.concord_server.config
      +
       
      +
      serverSocket - Variable in class nl.andrewl.concord_server.ConcordServer
      +
      +
      This server's socket, used to accept new client connections.
      +
      +
      sessionToken - Variable in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      The field for the sessionToken record component.
      +
      +
      sessionToken() - Method in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Returns the value of the sessionToken record component.
      +
      +
      sessionTokenCollection - Variable in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      shutdown() - Method in class nl.andrewl.concord_server.client.ClientThread
      +
      +
      Shuts down this client thread, closing the underlying socket and setting + ClientThread.running to false so that the main thread loop will + exit shortly.
      +
      +
      shutdown() - Method in class nl.andrewl.concord_server.ConcordServer
      +
      +
      Shuts down the server cleanly by doing the following things: + + Disconnecting all clients. + Shutting down any executor services. + Flushing and compacting the message database. + Flushing the server configuration one last time. +
      +
      +
      socket - Variable in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      stop() - Method in class nl.andrewl.concord_server.ConcordServer
      +
      +
      Stops the server.
      +
      +
      StopCommand - Class in nl.andrewl.concord_server.cli.command
      +
      +
      This command forcibly stops the server, disconnecting any clients.
      +
      +
      StopCommand() - Constructor for class nl.andrewl.concord_server.cli.command.StopCommand
      +
       
      +
      StringUtils - Class in nl.andrewl.concord_server.util
      +
       
      +
      StringUtils() - Constructor for class nl.andrewl.concord_server.util.StringUtils
      +
       
      +
      +

      T

      +
      +
      toData() - Method in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      toString() - Method in class nl.andrewl.concord_server.channel.Channel
      +
       
      +
      toString() - Method in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Returns a string representation of this record class.
      +
      +
      toString() - Method in class nl.andrewl.concord_server.client.ClientThread
      +
       
      +
      +

      U

      +
      +
      userCollection - Variable in class nl.andrewl.concord_server.client.AuthenticationService
      +
       
      +
      userCollection - Variable in class nl.andrewl.concord_server.client.ClientManager
      +
      +
      The nitrite collection containing user data.
      +
      +
      username - Variable in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      The field for the username record component.
      +
      +
      username() - Method in record class nl.andrewl.concord_server.client.ClientConnectionData
      +
      +
      Returns the value of the username record component.
      +
      +
      UUIDProvider - Class in nl.andrewl.concord_server.util
      +
       
      +
      UUIDProvider() - Constructor for class nl.andrewl.concord_server.util.UUIDProvider
      +
       
      +
      +A B C D E F G H I L M N O P R S T U 
      All Classes and Interfaces|All Packages|Serialized Form
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/index.html b/docs/javadoc/server/index.html new file mode 100644 index 0000000..c269af0 --- /dev/null +++ b/docs/javadoc/server/index.html @@ -0,0 +1,26 @@ + + + + +concord-server 1.0-SNAPSHOT API + + + + + + + + + + + +
      + +

      concord_server/module-summary.html

      +
      + + diff --git a/docs/javadoc/server/jquery-ui.overrides.css b/docs/javadoc/server/jquery-ui.overrides.css new file mode 100644 index 0000000..f89acb6 --- /dev/null +++ b/docs/javadoc/server/jquery-ui.overrides.css @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; +} diff --git a/docs/javadoc/server/legal/ADDITIONAL_LICENSE_INFO b/docs/javadoc/server/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..b62cc3e --- /dev/null +++ b/docs/javadoc/server/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1 @@ +Please see ..\java.base\ADDITIONAL_LICENSE_INFO diff --git a/docs/javadoc/server/legal/ASSEMBLY_EXCEPTION b/docs/javadoc/server/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..0d4cfb4 --- /dev/null +++ b/docs/javadoc/server/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1 @@ +Please see ..\java.base\ASSEMBLY_EXCEPTION diff --git a/docs/javadoc/server/legal/LICENSE b/docs/javadoc/server/legal/LICENSE new file mode 100644 index 0000000..4ad9fe4 --- /dev/null +++ b/docs/javadoc/server/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/docs/javadoc/server/legal/jquery.md b/docs/javadoc/server/legal/jquery.md new file mode 100644 index 0000000..8054a34 --- /dev/null +++ b/docs/javadoc/server/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.5.1 + +### jQuery License +``` +jQuery v 3.5.1 +Copyright JS Foundation and other contributors, https://js.foundation/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.5.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/docs/javadoc/server/legal/jqueryUI.md b/docs/javadoc/server/legal/jqueryUI.md new file mode 100644 index 0000000..8031bdb --- /dev/null +++ b/docs/javadoc/server/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.12.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/docs/javadoc/server/member-search-index.js b/docs/javadoc/server/member-search-index.js new file mode 100644 index 0000000..0ff7997 --- /dev/null +++ b/docs/javadoc/server/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"acceptAllNewClients"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"addChannel(Channel)","u":"addChannel(nl.andrewl.concord_server.channel.Channel)"},{"p":"nl.andrewl.concord_server.cli.command","c":"ChannelCommand","l":"addChannel(ConcordServer, String[])","u":"addChannel(nl.andrewl.concord_server.ConcordServer,java.lang.String[])"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"addClient(ClientThread)","u":"addClient(nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"AuthenticationService(ConcordServer, NitriteCollection)","u":"%3Cinit%3E(nl.andrewl.concord_server.ConcordServer,org.dizitart.no2.NitriteCollection)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"authService"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"broadcast(Message)","u":"broadcast(nl.andrewl.concord_core.msg.Message)"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"Channel(ConcordServer, UUID, String)","u":"%3Cinit%3E(nl.andrewl.concord_server.ConcordServer,java.util.UUID,java.lang.String)"},{"p":"nl.andrewl.concord_server.cli.command","c":"ChannelCommand","l":"ChannelCommand()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig.ChannelConfig","l":"ChannelConfig()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"channelIdMap"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"channelManager"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"ChannelManager(ConcordServer)","u":"%3Cinit%3E(nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.event","c":"ChannelMoveHandler","l":"ChannelMoveHandler()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"channelNameMap"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"channels"},{"p":"nl.andrewl.concord_server.event","c":"ChatHandler","l":"ChatHandler()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"chatHistoryDefaultCount"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"chatHistoryMaxCount"},{"p":"nl.andrewl.concord_server.event","c":"ChatHistoryRequestHandler","l":"ChatHistoryRequestHandler()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"ClientConnectionData(UUID, String, String, boolean)","u":"%3Cinit%3E(java.util.UUID,java.lang.String,java.lang.String,boolean)"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"clientId"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"clientManager"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"ClientManager(ConcordServer)","u":"%3Cinit%3E(nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"clientNickname"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"clients"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"ClientThread(Socket, ConcordServer)","u":"%3Cinit%3E(java.net.Socket,nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.util","c":"CollectionUtils","l":"CollectionUtils()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.cli","c":"ServerCli","l":"commands"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"compareTo(Channel)","u":"compareTo(nl.andrewl.concord_server.channel.Channel)"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"ConcordServer()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"config"},{"p":"nl.andrewl.concord_server","c":"DiscoveryServerPublisher","l":"config"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"CONFIG_FILE"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"connectedClients"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"currentChannel"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"DATABASE_FILE"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"db"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"decidePendingUser(UUID, boolean, String)","u":"decidePendingUser(java.util.UUID,boolean,java.lang.String)"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"defaultChannel"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig.ChannelConfig","l":"description"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"description"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"discoveryServerPublisher"},{"p":"nl.andrewl.concord_server","c":"DiscoveryServerPublisher","l":"DiscoveryServerPublisher(ServerConfig)","u":"%3Cinit%3E(nl.andrewl.concord_server.config.ServerConfig)"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"discoveryServers"},{"p":"nl.andrewl.concord_server.util","c":"CollectionUtils","l":"ensureIndexes(NitriteCollection, Map)","u":"ensureIndexes(org.dizitart.no2.NitriteCollection,java.util.Map)"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"establishEncryption()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"eventManager"},{"p":"nl.andrewl.concord_server.event","c":"EventManager","l":"EventManager(ConcordServer)","u":"%3Cinit%3E(nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"executorService"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"filePath"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"findAndAuthenticateUser(ClientLogin)","u":"findAndAuthenticateUser(nl.andrewl.concord_core.msg.types.client_setup.ClientLogin)"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"findAndAuthenticateUser(ClientSessionResume)","u":"findAndAuthenticateUser(nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume)"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"generateSessionToken(UUID)","u":"generateSessionToken(java.util.UUID)"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"getAsTag()"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"getChannelById(UUID)","u":"getChannelById(java.util.UUID)"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"getChannelByName(String)","u":"getChannelByName(java.lang.String)"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"getChannels()"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"getClientById(UUID)","u":"getClientById(java.util.UUID)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"getConnectedClients()"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"getConnectedIds()"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"getDefaultChannel()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"getMetaData()"},{"p":"nl.andrewl.concord_server.event","c":"ChatHistoryRequestHandler","l":"getOrDefault(Map, String, Long)","u":"getOrDefault(java.util.Map,java.lang.String,java.lang.Long)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"getPendingClientById(UUID)","u":"getPendingClientById(java.util.UUID)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"getPendingClients()"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"getPrivateChannel(Set)","u":"getPrivateChannel(java.util.Set)"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"getPrivateChannel(UUID, UUID)","u":"getPrivateChannel(java.util.UUID,java.util.UUID)"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"getPrivateChannelFromDatabase(Set)","u":"getPrivateChannelFromDatabase(java.util.Set)"},{"p":"nl.andrewl.concord_server.event","c":"ChatHistoryRequestHandler","l":"getResponse(Channel, long, Long, Long)","u":"getResponse(nl.andrewl.concord_server.channel.Channel,long,java.lang.Long,java.lang.Long)"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"getUserData()"},{"p":"nl.andrewl.concord_server.event","c":"ChatHandler","l":"handle(Chat, ClientThread, ConcordServer)","u":"handle(nl.andrewl.concord_core.msg.types.chat.Chat,nl.andrewl.concord_server.client.ClientThread,nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.event","c":"ChatHistoryRequestHandler","l":"handle(ChatHistoryRequest, ClientThread, ConcordServer)","u":"handle(nl.andrewl.concord_core.msg.types.chat.ChatHistoryRequest,nl.andrewl.concord_server.client.ClientThread,nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.cli.command","c":"ChannelCommand","l":"handle(ConcordServer, String[])","u":"handle(nl.andrewl.concord_server.ConcordServer,java.lang.String[])"},{"p":"nl.andrewl.concord_server.cli.command","c":"ListClientsCommand","l":"handle(ConcordServer, String[])","u":"handle(nl.andrewl.concord_server.ConcordServer,java.lang.String[])"},{"p":"nl.andrewl.concord_server.cli.command","c":"StopCommand","l":"handle(ConcordServer, String[])","u":"handle(nl.andrewl.concord_server.ConcordServer,java.lang.String[])"},{"p":"nl.andrewl.concord_server.cli","c":"ServerCliCommand","l":"handle(ConcordServer, String[])","u":"handle(nl.andrewl.concord_server.ConcordServer,java.lang.String[])"},{"p":"nl.andrewl.concord_server.event","c":"ChannelMoveHandler","l":"handle(MoveToChannel, ClientThread, ConcordServer)","u":"handle(nl.andrewl.concord_core.msg.types.channel.MoveToChannel,nl.andrewl.concord_server.client.ClientThread,nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.event","c":"EventManager","l":"handle(T, ClientThread)","u":"handle(T,nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.event","c":"MessageHandler","l":"handle(T, ClientThread, ConcordServer)","u":"handle(T,nl.andrewl.concord_server.client.ClientThread,nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.event","c":"ChatHistoryRequestHandler","l":"handleIdRequest(ClientThread, Channel, String)","u":"handleIdRequest(nl.andrewl.concord_server.client.ClientThread,nl.andrewl.concord_server.channel.Channel,java.lang.String)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"handleLogin(ClientLogin, ClientThread)","u":"handleLogin(nl.andrewl.concord_core.msg.types.client_setup.ClientLogin,nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"handleLogOut(UUID)","u":"handleLogOut(java.util.UUID)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"handleRegistration(ClientRegistration, ClientThread)","u":"handleRegistration(nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration,nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"handleSessionResume(ClientSessionResume, ClientThread)","u":"handleSessionResume(nl.andrewl.concord_core.msg.types.client_setup.ClientSessionResume,nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"hashCode()"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"hashCode()"},{"p":"nl.andrewl.concord_server","c":"DiscoveryServerPublisher","l":"httpClient"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"id"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"id"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig.ChannelConfig","l":"id"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"id()"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"identifyClient()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"idProvider"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"in"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"initializeClientConnection(ClientConnectionData, ClientThread)","u":"initializeClientConnection(nl.andrewl.concord_server.client.ClientConnectionData,nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"initializePendingClientConnection(UUID, String, ClientThread)","u":"initializePendingClientConnection(java.util.UUID,java.lang.String,nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.client","c":"InvalidIdentificationException","l":"InvalidIdentificationException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"isRunning()"},{"p":"nl.andrewl.concord_server.cli.command","c":"ChannelCommand","l":"listChannels(ConcordServer)","u":"listChannels(nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.cli.command","c":"ListClientsCommand","l":"ListClientsCommand()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"loadOrCreate(Path, IdProvider)","u":"loadOrCreate(java.nio.file.Path,nl.andrewl.concord_server.util.IdProvider)"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"nl.andrewl.concord_server","c":"DiscoveryServerPublisher","l":"mapper"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"maxMessageLength"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"messageCollection"},{"p":"nl.andrewl.concord_server.event","c":"EventManager","l":"messageHandlers"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"moveToChannel(ClientThread, Channel)","u":"moveToChannel(nl.andrewl.concord_server.client.ClientThread,nl.andrewl.concord_server.channel.Channel)"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"name"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig.ChannelConfig","l":"name"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"name"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"newClient"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"newClient()"},{"p":"nl.andrewl.concord_server.util","c":"IdProvider","l":"newId()"},{"p":"nl.andrewl.concord_server.util","c":"UUIDProvider","l":"newId()"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"out"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"pendingClients"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"port"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"privateChannelCollection"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"privateChannels"},{"p":"nl.andrewl.concord_server","c":"DiscoveryServerPublisher","l":"publish()"},{"p":"nl.andrewl.concord_server.util","c":"StringUtils","l":"random(int)"},{"p":"nl.andrewl.concord_server.event","c":"ChatHistoryRequestHandler","l":"read(Document)","u":"read(org.dizitart.no2.Document)"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"registerNewClient(ClientRegistration)","u":"registerNewClient(nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration)"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"registerPendingClient(ClientRegistration)","u":"registerPendingClient(nl.andrewl.concord_core.msg.types.client_setup.ClientRegistration)"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"removeChannel(Channel)","u":"removeChannel(nl.andrewl.concord_server.channel.Channel)"},{"p":"nl.andrewl.concord_server.cli.command","c":"ChannelCommand","l":"removeChannel(ConcordServer, String[])","u":"removeChannel(nl.andrewl.concord_server.ConcordServer,java.lang.String[])"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"removeClient(ClientThread)","u":"removeClient(nl.andrewl.concord_server.client.ClientThread)"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"removeExpiredSessionTokens()"},{"p":"nl.andrewl.concord_server.cli","c":"ServerCli","l":"run()"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"run()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"run()"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"running"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"running"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"save()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"scheduledExecutorService"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"sendMessage(Message)","u":"sendMessage(nl.andrewl.concord_core.msg.Message)"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"sendToClient(byte[])"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"sendToClient(Message)","u":"sendToClient(nl.andrewl.concord_core.msg.Message)"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"serializer"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"server"},{"p":"nl.andrewl.concord_server.channel","c":"ChannelManager","l":"server"},{"p":"nl.andrewl.concord_server.cli","c":"ServerCli","l":"server"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"server"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"server"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"server"},{"p":"nl.andrewl.concord_server.event","c":"EventManager","l":"server"},{"p":"nl.andrewl.concord_server.cli","c":"ServerCli","l":"ServerCli(ConcordServer)","u":"%3Cinit%3E(nl.andrewl.concord_server.ConcordServer)"},{"p":"nl.andrewl.concord_server.config","c":"ServerConfig","l":"ServerConfig()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"serverSocket"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"sessionToken"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"sessionToken()"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"sessionTokenCollection"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"shutdown()"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"shutdown()"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"socket"},{"p":"nl.andrewl.concord_server","c":"ConcordServer","l":"stop()"},{"p":"nl.andrewl.concord_server.cli.command","c":"StopCommand","l":"StopCommand()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.util","c":"StringUtils","l":"StringUtils()","u":"%3Cinit%3E()"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"toData()"},{"p":"nl.andrewl.concord_server.channel","c":"Channel","l":"toString()"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"toString()"},{"p":"nl.andrewl.concord_server.client","c":"ClientThread","l":"toString()"},{"p":"nl.andrewl.concord_server.client","c":"AuthenticationService","l":"userCollection"},{"p":"nl.andrewl.concord_server.client","c":"ClientManager","l":"userCollection"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"username"},{"p":"nl.andrewl.concord_server.client","c":"ClientConnectionData","l":"username()"},{"p":"nl.andrewl.concord_server.util","c":"UUIDProvider","l":"UUIDProvider()","u":"%3Cinit%3E()"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/server/module-search-index.js b/docs/javadoc/server/module-search-index.js new file mode 100644 index 0000000..8da8342 --- /dev/null +++ b/docs/javadoc/server/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [{"l":"concord_server"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/server/overview-tree.html b/docs/javadoc/server/overview-tree.html new file mode 100644 index 0000000..fcb866a --- /dev/null +++ b/docs/javadoc/server/overview-tree.html @@ -0,0 +1,128 @@ + + + + +Class Hierarchy (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +

      Class Hierarchy

      + +
      +
      +

      Interface Hierarchy

      + +
      +
      +
      +
      + +
      +
      +
      + + diff --git a/docs/javadoc/server/package-search-index.js b/docs/javadoc/server/package-search-index.js new file mode 100644 index 0000000..053d8ed --- /dev/null +++ b/docs/javadoc/server/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"m":"concord_server","l":"nl.andrewl.concord_server"},{"m":"concord_server","l":"nl.andrewl.concord_server.channel"},{"m":"concord_server","l":"nl.andrewl.concord_server.cli"},{"m":"concord_server","l":"nl.andrewl.concord_server.cli.command"},{"m":"concord_server","l":"nl.andrewl.concord_server.client"},{"m":"concord_server","l":"nl.andrewl.concord_server.config"},{"m":"concord_server","l":"nl.andrewl.concord_server.event"},{"m":"concord_server","l":"nl.andrewl.concord_server.util"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/server/resources/glass.png b/docs/javadoc/server/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/docs/javadoc/server/resources/glass.png differ diff --git a/docs/javadoc/server/resources/x.png b/docs/javadoc/server/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/docs/javadoc/server/resources/x.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/docs/javadoc/server/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..34abd18 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/docs/javadoc/server/script-dir/images/ui-bg_glass_65_dadada_1x400.png new file mode 100644 index 0000000..f058a93 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-bg_glass_65_dadada_1x400.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/docs/javadoc/server/script-dir/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..2ce04c1 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/docs/javadoc/server/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..a90afb8 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/docs/javadoc/server/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..dbe091f Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/docs/javadoc/server/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..5dc3593 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-icons_222222_256x240.png b/docs/javadoc/server/script-dir/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..e723e17 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-icons_222222_256x240.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-icons_2e83ff_256x240.png b/docs/javadoc/server/script-dir/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..1f5f497 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-icons_2e83ff_256x240.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-icons_454545_256x240.png b/docs/javadoc/server/script-dir/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..618f5b0 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-icons_454545_256x240.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-icons_888888_256x240.png b/docs/javadoc/server/script-dir/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..ee5e33f Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-icons_888888_256x240.png differ diff --git a/docs/javadoc/server/script-dir/images/ui-icons_cd0a0a_256x240.png b/docs/javadoc/server/script-dir/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..7e8ebc1 Binary files /dev/null and b/docs/javadoc/server/script-dir/images/ui-icons_cd0a0a_256x240.png differ diff --git a/docs/javadoc/server/script-dir/jquery-3.5.1.min.js b/docs/javadoc/server/script-dir/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/docs/javadoc/server/script-dir/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
      ",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
      "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
        ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
          ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
          ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
          ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
          ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/docs/javadoc/server/script-dir/jquery-ui.structure.min.css b/docs/javadoc/server/script-dir/jquery-ui.structure.min.css new file mode 100644 index 0000000..e880892 --- /dev/null +++ b/docs/javadoc/server/script-dir/jquery-ui.structure.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.12.1 - 2018-12-06 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/docs/javadoc/server/script.js b/docs/javadoc/server/script.js new file mode 100644 index 0000000..864989c --- /dev/null +++ b/docs/javadoc/server/script.js @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); + elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} + +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + contentDiv.addEventListener("scroll", function(e) { + var timeoutID; + if (!timeoutID) { + timeoutID = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + timeoutID = null; + }, 100); + } + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/docs/javadoc/server/search.js b/docs/javadoc/server/search.js new file mode 100644 index 0000000..db3b2f4 --- /dev/null +++ b/docs/javadoc/server/search.js @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Classes and Interfaces"; +var catMembers = "Members"; +var catSearchTags = "Search Tags"; +var highlight = "$&"; +var searchPattern = ""; +var fallbackPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MIN_RESULTS = 3; +var MAX_RESULTS = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher, fallbackMatcher) { + var escapedItem = escapeHtml(item); + var highlighted = escapedItem.replace(matcher, highlight); + if (highlighted === escapedItem) { + highlighted = escapedItem.replace(fallbackMatcher, highlight) + } + return highlighted; +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + } + return urlPrefix; +} +function createSearchPattern(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + var search = $("#search-input"); + var reset = $("#reset-button"); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + search.val(watermark).addClass('watermark'); + search.blur(function() { + if ($(this).val().length === 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + search.on('click keydown paste', function() { + if ($(this).val() === watermark) { + $(this).val('').removeClass('watermark'); + } + }); + reset.click(function() { + search.val('').focus(); + }); + search.focus()[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
        • " + item.category + "
        • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + var fallbackMatcher = new RegExp(fallbackPattern, "gi") + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else { + label = item.l; + } + var li = $("
        • ").appendTo(ul); + var div = $("
          ").appendTo(li); + if (item.category === catSearchTags && item.h) { + if (item.d) { + div.html(label + " (" + item.h + ")
          " + + item.d + "
          "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + var endOfName = leftParen > -1 ? leftParen : input.length; + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + searchPattern = createSearchPattern(request.term); + fallbackPattern = createSearchPattern(request.term.toLowerCase()); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var fallbackMatcher = new RegExp(fallbackPattern, "i"); + + function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { + if (indexArray) { + var newResults = []; + $.each(indexArray, function (i, item) { + item.category = category; + var ranking = rankMatch(matcher.exec(nameFunc(item)), category); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ranking: ranking, item: item}); + } + return newResults.length <= MAX_RESULTS; + }); + return newResults.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }).map(function(e) { + return e.item; + }); + } + return []; + } + function searchIndex(indexArray, category, nameFunc) { + var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); + result = result.concat(primaryResults); + if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { + var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); + result = result.concat(secondaryResults.filter(function (item) { + return primaryResults.indexOf(item) === -1; + })); + } + } + + searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); + searchIndex(packageSearchIndex, catPackages, function(item) { + return (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) : item.l; + }); + searchIndex(typeSearchIndex, catTypes, function(item) { + return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + }); + searchIndex(memberSearchIndex, catMembers, function(item) { + return request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l : item.l; + }); + searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); + + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search-input").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search-input").focus(); + } + } + }); +}); diff --git a/docs/javadoc/server/serialized-form.html b/docs/javadoc/server/serialized-form.html new file mode 100644 index 0000000..80c2364 --- /dev/null +++ b/docs/javadoc/server/serialized-form.html @@ -0,0 +1,77 @@ + + + + +Serialized Form (concord-server 1.0-SNAPSHOT API) + + + + + + + + + + + + + + + +
          + +
          +
          +
          +

          Serialized Form

          +
          + +
          +
          +
          + +
          +
          +
          + + diff --git a/docs/javadoc/server/stylesheet.css b/docs/javadoc/server/stylesheet.css new file mode 100644 index 0000000..836c62d --- /dev/null +++ b/docs/javadoc/server/stylesheet.css @@ -0,0 +1,865 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:15px; +} +h5 { + font-size:14px; +} +h6 { + font-size:13px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +.summary-table dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0; + overflow:hidden; +} +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:11px; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + min-height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.see-list, ul.see-list-long { + padding-left: 0; + list-style: none; +} +ul.see-list li { + display: inline; +} +ul.see-list li:not(:last-child):after, +ul.see-list-long li:not(:last-child):after { + content: ", "; + white-space: pre-wrap; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0; + padding-top:10px; + padding-left:1px; + margin:0; + white-space:pre; +} +.caption a:link, .caption a:visited { + color:#1f389c; +} +.caption a:hover, +.caption a:active { + color:#FFFFFF; +} +.caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +@media screen and (max-width: 800px) { + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-summary .col-last { + grid-column-end: span 2; + } +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:#dee3e9; + font-weight: bold; +} +.col-first, .col-first { + font-size:13px; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:13px; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited, +.constant-values-container a:link, .constant-values-container a:visited, +.all-classes-container a:link, .all-classes-container a:visited, +.all-packages-container a:link, .all-packages-container a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.even-row-color, .even-row-color .table-header { + background-color:#FFFFFF; +} +.odd-row-color, .odd-row-color .table-header { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +#search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset-button { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +span.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak font sizes and paddings for small screens. + */ +@media screen and (max-width: 1050px) { + #search-input { + width: 300px; + } +} +@media screen and (max-width: 800px) { + #search-input { + width: 200px; + } + .top-nav, + .bottom-nav { + font-size: 11px; + padding-top: 6px; + } + .sub-nav { + font-size: 11px; + } + .about-language { + padding-right: 16px; + } + ul.nav-list li, + .sub-nav .nav-list-search { + padding: 6px; + } + ul.sub-nav-list li { + padding-top: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 500px) { + #search-input { + width: 150px; + } + .top-nav, + .bottom-nav { + font-size: 10px; + } + .sub-nav { + font-size: 10px; + } + .about-language { + font-size: 10px; + padding-right: 12px; + } +} diff --git a/docs/javadoc/server/tag-search-index.js b/docs/javadoc/server/tag-search-index.js new file mode 100644 index 0000000..f38b3cb --- /dev/null +++ b/docs/javadoc/server/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/javadoc/server/type-search-index.js b/docs/javadoc/server/type-search-index.js new file mode 100644 index 0000000..51d1de2 --- /dev/null +++ b/docs/javadoc/server/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"nl.andrewl.concord_server.client","l":"AuthenticationService"},{"p":"nl.andrewl.concord_server.channel","l":"Channel"},{"p":"nl.andrewl.concord_server.cli.command","l":"ChannelCommand"},{"p":"nl.andrewl.concord_server.config","l":"ServerConfig.ChannelConfig"},{"p":"nl.andrewl.concord_server.channel","l":"ChannelManager"},{"p":"nl.andrewl.concord_server.event","l":"ChannelMoveHandler"},{"p":"nl.andrewl.concord_server.event","l":"ChatHandler"},{"p":"nl.andrewl.concord_server.event","l":"ChatHistoryRequestHandler"},{"p":"nl.andrewl.concord_server.client","l":"ClientConnectionData"},{"p":"nl.andrewl.concord_server.client","l":"ClientManager"},{"p":"nl.andrewl.concord_server.client","l":"ClientThread"},{"p":"nl.andrewl.concord_server.util","l":"CollectionUtils"},{"p":"nl.andrewl.concord_server","l":"ConcordServer"},{"p":"nl.andrewl.concord_server","l":"DiscoveryServerPublisher"},{"p":"nl.andrewl.concord_server.event","l":"EventManager"},{"p":"nl.andrewl.concord_server.util","l":"IdProvider"},{"p":"nl.andrewl.concord_server.client","l":"InvalidIdentificationException"},{"p":"nl.andrewl.concord_server.cli.command","l":"ListClientsCommand"},{"p":"nl.andrewl.concord_server.event","l":"MessageHandler"},{"p":"nl.andrewl.concord_server.cli","l":"ServerCli"},{"p":"nl.andrewl.concord_server.cli","l":"ServerCliCommand"},{"p":"nl.andrewl.concord_server.config","l":"ServerConfig"},{"p":"nl.andrewl.concord_server.cli.command","l":"StopCommand"},{"p":"nl.andrewl.concord_server.util","l":"StringUtils"},{"p":"nl.andrewl.concord_server.util","l":"UUIDProvider"}];updateSearchResults(); \ No newline at end of file