diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 95ff090..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,17 +0,0 @@
-# Normalize as LF in the repository, OS native locally
-* text=auto
-*.java text
-
-# Binary files that should not be modified
-*.dat binary
-*.db binary
-*.gif binary
-*.icns binary
-*.ico binary
-*.jks binary
-*.jpg binary
-*.key binary
-*.png binary
-*.ttf binary
-*.wav binary
-JavaApplicationStub binary
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 8747b69..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,81 +0,0 @@
-# Build #
-#########
-MANIFEST.MF
-dependency-reduced-pom.xml
-
-# Compiled #
-############
-bin
-build
-dist
-lib
-out
-run
-target
-*.com
-*.class
-*.dll
-*.exe
-*.o
-*.so
-
-# Databases #
-#############
-*.db
-*.sql
-*.sqlite
-
-# Packages #
-############
-*.7z
-*.dmg
-*.ear
-*.gz
-*.iso
-*.jar
-!/gradle/wrapper/gradle-wrapper.jar
-*.rar
-*.tar
-*.war
-*.zip
-
-# Repository #
-##############
-.git
-
-# Logging #
-###########
-/logs
-*.log
-
-# Misc #
-########
-*.bak
-*.tmp
-
-# System #
-##########
-.DS_Store
-ehthumbs.db
-Thumbs.db
-
-# Project #
-###########
-.buildpath
-.classpath
-.cproject
-.externalToolBuilders
-.gradle
-.idea
-.project
-.settings
-nbproject
-atlassian-ide-plugin.xml
-build.xml
-nb-configuration.xml
-*.iml
-*.ipr
-*.iws
-*.launch
-*.pydevproject
-
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 9bfb976..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-# Use new Travis-CI infrastructure
-sudo: false
-
-# Source language and JDK version to use
-language: java
-jdk: oraclejdk8
-
-# Use cached Maven dependencies
-cache:
- directories:
- - $HOME/.m2
-
-# Pre-install Maven dependencies
-install: mvn dependency:go-offline
-
-# Compile and test source
-script: mvn clean -DbuildNumber=$TRAVIS_BUILD_NUMBER -DciSystem=travis -Dcommit=${TRAVIS_COMMIT:0:7}
-
-# Fetch resources, run deployment goal/task, and generate Javadocs and reports
-after_success:
- # Get files for use with build, namely the custom Maven settings.xml and scripts
- - "git clone https://github.com/flow/travis-ci-resources.git $HOME/build/flow/travis"
- # DEVELOP: Check if commit is not a pull request, if repo is official, if branch is not master; then deploy artifacts
- - "[[ $TRAVIS_PULL_REQUEST == false ]] && [[ $TRAVIS_REPO_SLUG == flow/network ]] && [[ $TRAVIS_BRANCH == develop ]] && $HOME/build/flow/travis/deploy.sh
- # RELEASE: Check if commit is not a pull request, if repo is official, if branch is master; then run deployment script
- - "[[ $TRAVIS_PULL_REQUEST == false ]] && [[ $TRAVIS_REPO_SLUG == flow/network ]] && [[ $TRAVIS_BRANCH == master ]] && $HOME/build/flow/travis/deploy.sh && $HOME/build/flow/travis/gh-pages.sh"
- # Generate Javadocs and report for Coveralls.io
- - "mvn javadoc:javadoc cobertura:cobertura coveralls:report -DserviceJobId=$TRAVIS_JOB_ID"
-
-# RELEASE: Deploy JARs to GitHub Releases
-
-deploy:
- provider: releases
- api-key: $GITHUB_TOKEN
- file_glob: true
- file: target/flow-network-*.jar
- skip_cleanup: true
- on:
- branch: master
-
-# Notification services
-notifications:
- # Disable build status email notifications, until the issue with forks is fixed
- email: false
- webhooks:
- # Send build information and status to Notifico
- - http://n.tkte.ch/h/2042/RDqswG16PpWPx1d7RD3Gx7Ka
-
-# Environmental system variables
-env:
- global:
- # Make the log output cleaner
- - TERM=dumb
- # Super secure, encrypted variables! Ssssh!
- - secure: "Auu6BiJNEI4K22x5Fskki3/bTSiA0VYqd/5Wh8GE86y/upVCcUAmW8dBBJ0VAIhcQjTBbMhxqP+G0K8DbpD8T+OfMEqZbK4kGOZVPEGZ6sHjKvdlKYlMK5g4r6a6+3hI457mWuXSjr4xQ2ar1dGKgOp+1leYwDHU+24IzSjnTHs="
- - secure: "bs6gZ6YT5Rq0oU0F0YRhPVAEZG1rPTAAz6BjNLW0HPus1NflXYMDIOe2HpnjA++N+1jgiYFiIyBkOWRAu3pyJsBEkf9hpOsnEMQcMddrZpzp+Qa4XogKLSOwbUJQNCkx2bUM/UlC0sk3WoRY0F1OoIoewqfuc7+OnV/klV64hNg="
- - secure: "iUTC++/9GL6FBYQYSPPlgZNbcsVztFzMkD1OAm4gVkTOVGvm8QmkP1JUNTNTJqglgvQg/0AzpSP0XPe173svoaqqPW5aEdQ0hO+wAJ51C7PKqimh5hT2j1MhE6IVsOgkSfSeknXBmrN7pRjDu3xTkS/+aCfpMFU5pBDGVuTqUfo="
- - secure: "hCM+d/tIrfCKPvtUyB7oQ1CBR63HvcU8HAQiSCAI5e9Lu+mGllk0qCU/53sE2OTDoQyAnye4/b1Lim6wLWV4bDpLFyH4uVe/oH9TxCpu1pFROY/wIJNBnrqrp80ZPJfDE1wuYT60gn9J5Om6HtWE3exk7Gz+8kPRx5FzfKEaQo8="
diff --git a/HEADER.txt b/HEADER.txt
deleted file mode 100644
index 6218055..0000000
--- a/HEADER.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-This file is part of ${project}, licensed under the MIT License (MIT).
-
-Copyright (c) ${year} ${name} <${url}/>
-
-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.
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index 1a63677..0000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-The MIT License (MIT)
-
-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.
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index 5abc660..0000000
--- a/README.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Flow Network [][License] [][Donate] [](https://travis-ci.org/flow/network) [](https://coveralls.io/r/flow/network)
-
-Network library for the Flow collection.
-
-## Getting Started
-* [Examples and code snippets](https://github.com/flow/examples/tree/master/network)
-* [Official documentation](#documentation)
-* [IRC support chat](http://kiwiirc.com/client/irc.esper.net/flow)
-* [Issues tracker](https://github.com/flow/network/issues)
-
-## Source Code
-The latest and greatest source can be found here on [GitHub](https://github.com/flow/network). If you are using Git, use this command to clone the project:
-
- git clone git://github.com/flow/network.git
-
-Or download the latest [development archive](https://github.com/flow/network/archive/develop.zip) or the latest [stable archive](https://github.com/flow/network/archive/master.zip).
-
-## Dependencies
-We love open-source libraries! This project uses are few of them to make things easier. If you aren't using Maven or Gradle, you'll need these!
-* [io.netty:netty-all](https://oss.sonatype.org/#nexus-search;gav~io.netty~netty-all~~~)
-* [org.slf4j:slf4j-api](https://oss.sonatype.org/#nexus-search;gav~org.slf4j~slf4j-api~~~)
-
-## Test Dependencies
-The following dependencies are only needed if you compiling the tests included with this project. Gotta test 'em all!
-* [junit:junit](https://oss.sonatype.org/#nexus-search;gav~junit~junit~~~)
-* [org.hamcrest:hamcrest-library](https://oss.sonatype.org/#nexus-search;gav~org.hamcrest~hamcrest-library~~~)
-* [org.powermock:powermock-api-mockito](https://oss.sonatype.org/#nexus-search;gav~org.powermock~powermock-api-mockito~~~)
-* [org.powermock:powermock-module-junit4](https://oss.sonatype.org/#nexus-search;gav~org.powermock~powermock-module-junit4~~~)
-
-## Building from Source
-This project can be built with the _latest_ [Java Development Kit](http://oracle.com/technetwork/java/javase/downloads) and [Maven](https://maven.apache.org/) or [Gradle](https://www.gradle.org/). Maven and Gradle are used to simplify dependency management, but using either of them is optional.
-
-For Maven, the command `mvn clean package` will build the project and will put the compiled JAR in `target`, and `mvn clean install` will copy it to your local Maven repository.
-
-For Gradle, the command `gradlew` will build the project and will put the compiled JAR in `~/build/distributions`, and `gradlew install` will copy it to your local Maven repository.
-
-## Contributing
-Are you a talented programmer looking to contribute some code? We'd love the help!
-
-* Open a pull request with your changes, following our [guidelines and coding standards](CONTRIBUTING.md).
-* Please follow the above guidelines for your pull request(s) accepted.
-* For help setting up the project, keep reading!
-
-Love the project? Feel free to [donate] to help continue development! Flow projects are open-source and powered by community members, like yourself. Without you, we wouldn't be here today!
-
-Don't forget to watch and star our repo to keep up-to-date with the latest Flow development!
-
-## Usage
-If you're using [Maven](https://maven.apache.org/download.html) to manage project dependencies, simply include the following in your `pom.xml` file:
-
-
- com.flowpowered
- flow-network
- 1.0.0
-
-
-If you're using [Gradle](https://www.gradle.org/) to manage project dependencies, simply include the following in your `build.gradle` file:
-
- repositories {
- mavenCentral()
- }
- dependencies {
- compile 'com.flowpowered:flow-network:1.0.0'
- }
-
-If you plan on using snapshots and do not already have the snapshot repo in your repository list, you will need to add this as well:
-
- https://oss.sonatype.org/content/groups/public/
-
-If you'd prefer to manually import the latest .jar file, you can get it [here](https://github.com/flow/network/releases).
-
-## Documentation
-Want to get friendly with the project and put it to good use? Check out the latest [Javadocs](https://flowpowered.com/network).
-
-To generate Javadocs with Maven, use the `mvn javadoc:javadoc` command. To view the Javadocs simply go to `target/site/apidocs/` and open `index.html` in a web browser.
-
-To generate Javadocs with Gradle, use the `gradlew javadoc` command. To view the Javadocs simply go to `build/docs/javadoc/` and open `index.html` in a web browser.
-
-## Version Control
-We've adopted the [git flow branching model](http://nvie.com/posts/a-successful-git-branching-model/) in our projects. The creators of git flow released a [short intro video](http://vimeo.com/16018419) to explain the model.
-
-The `master` branch is production-ready and contains the latest tagged releases. Before a release is made, it is stagged in `release/x` branches before being pushed and tagged in the `master` branch. Small patches from `hotfix/x` branches are also pushed to `master`, and will always have a release version. The `develop` branch is pre-production, and is where we push `feature/x` branches for testing.
-
-## Legal Stuff
-Flow Network is licensed under the [MIT License][License]. Basically, you can do whatever you want as long as you include the original copyright. Please see the `LICENSE.txt` file for details.
-
-## Credits
-* [Spout](https://spout.org/) and contributors - *where we all began, and for much of the re-licensed code.*
-* All the people behind [Java](http://www.oracle.com/technetwork/java/index.html), [Maven](https://maven.apache.org/), and [Gradle](https://www.gradle.org/).
-
-[Donate]: https://flattr.com/submit/auto?user_id=spout&url=https://github.com/flow/network&title=Flow+Network&language=Java&tags=github&category=software
-[License]: https://tldrlegal.com/l/mit
diff --git a/allclasses-frame.html b/allclasses-frame.html
new file mode 100644
index 0000000..7b54152
--- /dev/null
+++ b/allclasses-frame.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+All Classes (Flow Network 1.0.0 API)
+
+
+
+
+
+All Classes
+
+
+
diff --git a/allclasses-noframe.html b/allclasses-noframe.html
new file mode 100644
index 0000000..9e6b382
--- /dev/null
+++ b/allclasses-noframe.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+All Classes (Flow Network 1.0.0 API)
+
+
+
+
+
+All Classes
+
+
+
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 8bc8780..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,216 +0,0 @@
-// Default tasks
-defaultTasks 'clean', 'licenseFormat', 'build', 'install'
-
-// Apply plugins
-apply plugin: 'java'
-apply plugin: 'cobertura' // Coveralls dependency
-apply plugin: 'com.github.kt3k.coveralls'
-apply plugin: 'license'
-apply plugin: 'maven'
-apply plugin: 'signing'
-
-// Project information
-ext.projectName = 'Flow Network'
-group = 'com.flowpowered'
-archivesBaseName = 'flow-network'
-version = '1.0.0'
-ext.packaging = 'jar'
-ext.inceptionYear = '2013'
-ext.url = 'https://flowpowered.com/network'
-ext.description = 'Network library for the Flow collection.'
-
-// Organization information
-ext.organization = 'Flow Powered'
-ext.organizationUrl = 'https://flowpowered.com'
-
-// Build properties
-ext.buildNumber = project.hasProperty('buildNumber') ? buildNumber : '0'
-ext.ciSystem = project.hasProperty('ciSystem') ? ciSystem : 'unknown'
-ext.commit = project.hasProperty('commit') ? commit : 'unknown'
-
-// Build plugin repositories and dependencies
-buildscript {
- repositories {
- mavenLocal()
- mavenCentral()
- maven {
- name = 'sonatype-nexus'
- url = 'https://oss.sonatype.org/content/groups/public/'
- }
- }
- dependencies {
- classpath 'net.saliman:gradle-cobertura-plugin:2.3.0' // Coveralls dependency
- classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.10.0'
- classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.4.0x'
- }
-}
-
-// Project repositories
-repositories {
- mavenLocal()
- mavenCentral()
- maven {
- name = 'sonatype-nexus'
- url = 'https://oss.sonatype.org/content/groups/public/'
- }
-}
-
-// Project dependencies
-dependencies {
- compile 'io.netty:netty-all:4.0.33.Final'
- compile 'org.slf4j:slf4j-api:1.7.18'
- testCompile 'junit:junit:4.12'
- testCompile 'org.hamcrest:hamcrest-library:1.3'
- testCompile 'org.powermock:powermock-api-mockito:1.6.4'
- testCompile 'org.powermock:powermock-module-junit4:1.6.4'
-}
-
-// Filter, process, and include resources
-processResources {
- // Include in final JAR
- from(rootProject.rootDir) {
- include 'LICENSE.txt'
- }
-}
-
-// License header formatting
-license {
- ext.project = projectName
- ext.year = inceptionYear
- ext.name = organization
- ext.url = organizationUrl
- header rootProject.file('HEADER.txt')
- ignoreFailures true
- strictCheck true
- useDefaultMappings false
- mapping { java = 'SLASHSTAR_STYLE' }
-}
-
-// Source compiler configuration
-configure([compileJava, compileTestJava]) {
- sourceCompatibility = '1.7'
- targetCompatibility = '1.7'
- options.encoding = 'UTF-8'
- options.compilerArgs << '-Xlint:all'
- options.compilerArgs << '-Xlint:-path'
- options.deprecation = true
-}
-
-// JAR manifest configuration
-jar.manifest.mainAttributes(
- 'Built-By': System.properties['user.name'],
- 'Created-By': System.properties['java.vm.version'] + ' (' + System.properties['java.vm.vendor'] + ')',
- 'Specification-Title': projectName,
- 'Specification-Version': version + '+' + ciSystem + '-b' + buildNumber + '.git-' + commit,
- 'Specification-Vendor': organization + ' - ' + organizationUrl)
-
-// Javadoc doclint configuration
-if (JavaVersion.current().isJava8Compatible()) {
- allprojects {
- tasks.withType(Javadoc) {
- options.addStringOption('Xdoclint:none', '-quiet')
- }
- }
-}
-
-// Coveralls report configuration
-cobertura.coverageFormats = ['html', 'xml'] // Coveralls requires xml format
-
-// Artifact deployment
-uploadArchives {
- repositories.mavenDeployer {
- // Javadoc JAR generation
- task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = 'javadoc'
- from 'build/docs/javadoc'
- }
-
- // Source JAR generation
- task sourcesJar(type: Jar) {
- classifier = 'sources'
- from sourceSets.main.java.srcDirs
- }
-
- // Set all artifacts
- artifacts {
- archives jar, javadocJar, sourcesJar
- }
-
- // Tasks and variables based on if release or snapshot
- if (version.endsWith('-SNAPSHOT')) {
- // Set variable to snapshots repository URL
- ext.sonatypeUrl = 'https://oss.sonatype.org/content/repositories/snapshots/'
- } else {
- // Set variable to releases repository URL
- ext.sonatypeUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
-
- // Artifact signing
- signing {
- // Sign JAR artifacts
- sign configurations.archives
-
- // Sign Maven POM
- beforeDeployment {
- org.gradle.api.artifacts.maven.MavenDeployment deployment -> signing.signPom(deployment)
- }
- }
- }
-
- // Set login credentials for repository
- repository(url: sonatypeUrl) {
- authentication(userName: System.getenv("sonatypeUsername"), password: System.getenv("sonatypePassword"))
- }
-
- // Maven POM generation
- pom.project {
- name projectName
- artifactId archivesBaseName
- packaging packaging
- inceptionYear inceptionYear
- url url
- description project.ext.description
-
- scm {
- connection 'scm:git:git://github.com/flow/network.git'
- developerConnection 'scm:git:ssh://git@github.com:flow/network.git'
- url 'https://github.com/flow/network'
- }
-
- licenses {
- license {
- name 'MIT License'
- url 'https://tldrlegal.com/l/mit'
- distribution 'repo'
- }
- }
-
- organization {
- name organization
- url organizationUrl
- }
-
- developers {
- developer {
- id 'DDoS'
- name 'Aleksi Sapon'
- email 'qctechs@gmail.com'
- }
- developer {
- id 'kitskub'
- name 'Jack Huey'
- email 'kitskub@gmail.com'
- }
- developer {
- id 'Wolf480pl'
- name 'Wolf480pl'
- email 'wolf480@interia.pl'
- }
- developer {
- id 'lukespragg'
- name 'Luke Spragg'
- email 'the@wulf.im'
- }
- }
- }
- }
-}
diff --git a/bump.sh b/bump.sh
deleted file mode 100755
index 38ec179..0000000
--- a/bump.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-function die_with() { echo "$*" >&2; exit 1; }
-
-echo "Getting current version from pom.xml"
-CURRENT_VERSION="`sed -n 's|.*\(.*\) .*|\1|p' pom.xml | awk '{ print $1; exit }'`"
-echo "Current version from pom.xml: $CURRENT_VERSION"
-
-read -p "New version: " NEW_VERSION || die_with "Prompt for new version failed"
-
-if ! echo $NEW_VERSION | grep -i -- '-SNAPSHOT' >/dev/null; then echo "WARNING: changing to a release version!"; fi
-
-if [ -f pom.xml ]; then
- echo "Updating the project version in pom.xml to $NEW_VERSION"
- awk "/${CURRENT_VERSION//./\\.}/{ if (DONE != 1) {gsub(/${CURRENT_VERSION//./\\.}/, \"$NEW_VERSION\"); DONE=1; }} {print;}" < pom.xml > pom.xml.1 && mv -f pom.xml.1 pom.xml || die_with "Failed to update pom.xml!"
-fi
-
-if [ -f build.gradle ]; then
- echo "Updating the project version in build.gradle to $NEW_VERSION"
- awk "/${CURRENT_VERSION//./\\.}/{ if (DONE != 1) {gsub(/${CURRENT_VERSION//./\\.}/, \"$NEW_VERSION\"); DONE=1; }} {print;}" < build.gradle > build.gradle.1 && mv -f build.gradle.1 build.gradle || die_with "Failed to update build.gradle!"
-fi
-
-if [ -f README.md ]; then
- echo "Updating the project version in README.md to $NEW_VERSION"
- awk "/${CURRENT_VERSION//./\\.}/{ if (DONE != 1) {gsub(/${CURRENT_VERSION//./\\.}/, \"$NEW_VERSION\"); }} {print;}" < README.md > README.md.1 && mv -f README.md.1 README.md || die_with "Failed to update README.md!"
-fi
diff --git a/com/flowpowered/network/AsyncableMessage.html b/com/flowpowered/network/AsyncableMessage.html
new file mode 100644
index 0000000..9eea080
--- /dev/null
+++ b/com/flowpowered/network/AsyncableMessage.html
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+AsyncableMessage (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method and Description
+
+
+boolean
+isAsync ()
+This method may optionally be used to define if the message should be handled asynchronously or synchronously, when the option is available.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/BasicChannelInitializer.html b/com/flowpowered/network/BasicChannelInitializer.html
new file mode 100644
index 0000000..09ce522
--- /dev/null
+++ b/com/flowpowered/network/BasicChannelInitializer.html
@@ -0,0 +1,340 @@
+
+
+
+
+
+
+BasicChannelInitializer (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+io.netty.channel.ChannelHandlerAdapter
+
+
+io.netty.channel.ChannelInboundHandlerAdapter
+
+
+io.netty.channel.ChannelInitializer<io.netty.channel.socket.SocketChannel>
+
+
+com.flowpowered.network.BasicChannelInitializer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
+io.netty.channel.ChannelHandler.Sharable
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelInitializer
+channelRegistered, exceptionCaught
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
+channelActive, channelInactive, channelRead, channelReadComplete, channelUnregistered, channelWritabilityChanged, userEventTriggered
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelHandlerAdapter
+handlerAdded, handlerRemoved, isSharable
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+Methods inherited from interface io.netty.channel.ChannelHandler
+handlerAdded, handlerRemoved
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/Codec.CodecRegistration.html b/com/flowpowered/network/Codec.CodecRegistration.html
new file mode 100644
index 0000000..7bc0b70
--- /dev/null
+++ b/com/flowpowered/network/Codec.CodecRegistration.html
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+Codec.CodecRegistration (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getOpcode
+public int getOpcode()
+
+
+
+
+
+
+
+
+
+
+
+hashCode
+public int hashCode()
+
+Overrides:
+hashCode in class Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/Codec.html b/com/flowpowered/network/Codec.html
new file mode 100644
index 0000000..d65a00c
--- /dev/null
+++ b/com/flowpowered/network/Codec.html
@@ -0,0 +1,283 @@
+
+
+
+
+
+
+Codec (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method and Description
+
+
+T
+decode (io.netty.buffer.ByteBuf buffer)
+
+
+
+
+io.netty.buffer.ByteBuf
+encode (io.netty.buffer.ByteBuf buf,
+ T message)
+Encodes a
Message into a
ByteBuffer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/ConnectionManager.html b/com/flowpowered/network/ConnectionManager.html
new file mode 100644
index 0000000..c60a9a2
--- /dev/null
+++ b/com/flowpowered/network/ConnectionManager.html
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+ConnectionManager (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+newSession
+Session newSession(io.netty.channel.Channel c)
+Creates a new Session for a Channel. This session will be used for all API-facing actions.
+ Therefore, this session will most likely be saved by the ConnectionManager in order to interact with the
+ Session.
+
+Parameters:
+c - the Channel the Session will be using
+Returns:
+the new Session
+
+
+
+
+
+
+
+
+sessionInactivated
+void sessionInactivated(Session session)
+Called when a session becomes inactive because the underlying channel has been closed.
+ All references to the Session should be removed, as it will no longer be valid.
+
+Parameters:
+session - the Session which will become inactive
+
+
+
+
+
+
+
+
+shutdown
+void shutdown()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/Message.html b/com/flowpowered/network/Message.html
new file mode 100644
index 0000000..2da16f9
--- /dev/null
+++ b/com/flowpowered/network/Message.html
@@ -0,0 +1,272 @@
+
+
+
+
+
+
+Message (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+All Known Subinterfaces:
+AsyncableMessage
+
+
+
+public interface Message
+Implementers of this class represent the data of a message to be sent.
+ There are a few rules that messages should follow:
+
+ All message fields should be immutable. This ensures thread-safety and makes it so Message objects can be safely stored
+ Message subclasses should override toString() , equals(Object) , and hashCode() .
+ All fields in a Message should be protocol-primitive (can be written directly via ByteBuf methods or via a *single* ByteBufUtils method)
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/MessageHandler.html b/com/flowpowered/network/MessageHandler.html
new file mode 100644
index 0000000..6510b1e
--- /dev/null
+++ b/com/flowpowered/network/MessageHandler.html
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+MessageHandler (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+Type Parameters:
+S - the session to cast to. THIS IS UNSAFE.
+T - the type of message to handle
+
+
+
+public interface MessageHandler<S extends Session ,T extends Message >
+Defines a class which handles a message of type T.
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/NetworkClient.html b/com/flowpowered/network/NetworkClient.html
new file mode 100644
index 0000000..adb087b
--- /dev/null
+++ b/com/flowpowered/network/NetworkClient.html
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+NetworkClient (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+ConnectionManager
+
+
+
+public abstract class NetworkClient
+extends Object
+implements ConnectionManager
+This class defines an easy, general way to start a client. It is recommended that any clients use or extend this class.
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor and Description
+
+
+NetworkClient ()
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+NetworkClient
+public NetworkClient()
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+preConnectOption
+public <T> void preConnectOption(io.netty.channel.ChannelOption<T> option,
+ T value)
+Sets an ChannelOption to apply prior to connecting. After a connection has been established, this method is useless; an Exception *may* be thrown on it's use.
+
+Type Parameters:
+T -
+Parameters:
+option -
+value -
+
+
+
+
+
+
+
+
+
+
+
+
+onConnectFailure
+public void onConnectFailure(SocketAddress address,
+ Throwable t)
+Called when a connection cannot be made.
+
+Parameters:
+address - The address that we attempted to connect to.
+t - The cause of why the connection couldn't be made. This can be null.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/NetworkServer.html b/com/flowpowered/network/NetworkServer.html
new file mode 100644
index 0000000..fa5b6ca
--- /dev/null
+++ b/com/flowpowered/network/NetworkServer.html
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+NetworkServer (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+ConnectionManager
+
+
+
+public abstract class NetworkServer
+extends Object
+implements ConnectionManager
+This class defines an easy, general way to start a server. It is recommended that any server use or extend this class.
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor and Description
+
+
+NetworkServer ()
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+NetworkServer
+public NetworkServer()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/AsyncableMessage.html b/com/flowpowered/network/class-use/AsyncableMessage.html
new file mode 100644
index 0000000..f9f9ee7
--- /dev/null
+++ b/com/flowpowered/network/class-use/AsyncableMessage.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.AsyncableMessage (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.AsyncableMessage
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/BasicChannelInitializer.html b/com/flowpowered/network/class-use/BasicChannelInitializer.html
new file mode 100644
index 0000000..110dece
--- /dev/null
+++ b/com/flowpowered/network/class-use/BasicChannelInitializer.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.BasicChannelInitializer (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.BasicChannelInitializer
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/Codec.CodecRegistration.html b/com/flowpowered/network/class-use/Codec.CodecRegistration.html
new file mode 100644
index 0000000..b6d3929
--- /dev/null
+++ b/com/flowpowered/network/class-use/Codec.CodecRegistration.html
@@ -0,0 +1,272 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.Codec.CodecRegistration (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/Codec.html b/com/flowpowered/network/class-use/Codec.html
new file mode 100644
index 0000000..726f9a0
--- /dev/null
+++ b/com/flowpowered/network/class-use/Codec.html
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.Codec (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/ConnectionManager.html b/com/flowpowered/network/class-use/ConnectionManager.html
new file mode 100644
index 0000000..8ffbbb4
--- /dev/null
+++ b/com/flowpowered/network/class-use/ConnectionManager.html
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.ConnectionManager (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/Message.html b/com/flowpowered/network/class-use/Message.html
new file mode 100644
index 0000000..c982ef1
--- /dev/null
+++ b/com/flowpowered/network/class-use/Message.html
@@ -0,0 +1,497 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.Message (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/MessageHandler.html b/com/flowpowered/network/class-use/MessageHandler.html
new file mode 100644
index 0000000..a3fd1fd
--- /dev/null
+++ b/com/flowpowered/network/class-use/MessageHandler.html
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.MessageHandler (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/NetworkClient.html b/com/flowpowered/network/class-use/NetworkClient.html
new file mode 100644
index 0000000..34f9cad
--- /dev/null
+++ b/com/flowpowered/network/class-use/NetworkClient.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.NetworkClient (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.NetworkClient
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/class-use/NetworkServer.html b/com/flowpowered/network/class-use/NetworkServer.html
new file mode 100644
index 0000000..9ed6192
--- /dev/null
+++ b/com/flowpowered/network/class-use/NetworkServer.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.NetworkServer (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.NetworkServer
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/ChannelClosedException.html b/com/flowpowered/network/exception/ChannelClosedException.html
new file mode 100644
index 0000000..8be259b
--- /dev/null
+++ b/com/flowpowered/network/exception/ChannelClosedException.html
@@ -0,0 +1,281 @@
+
+
+
+
+
+
+ChannelClosedException (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/IllegalOpcodeException.html b/com/flowpowered/network/exception/IllegalOpcodeException.html
new file mode 100644
index 0000000..b53c9a8
--- /dev/null
+++ b/com/flowpowered/network/exception/IllegalOpcodeException.html
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+IllegalOpcodeException (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/UnknownPacketException.html b/com/flowpowered/network/exception/UnknownPacketException.html
new file mode 100644
index 0000000..9e264f7
--- /dev/null
+++ b/com/flowpowered/network/exception/UnknownPacketException.html
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+UnknownPacketException (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getOpcode
+public int getOpcode()
+
+
+
+
+
+
+
+getLength
+public int getLength()
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/class-use/ChannelClosedException.html b/com/flowpowered/network/exception/class-use/ChannelClosedException.html
new file mode 100644
index 0000000..023f454
--- /dev/null
+++ b/com/flowpowered/network/exception/class-use/ChannelClosedException.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.exception.ChannelClosedException (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/class-use/IllegalOpcodeException.html b/com/flowpowered/network/exception/class-use/IllegalOpcodeException.html
new file mode 100644
index 0000000..3774f82
--- /dev/null
+++ b/com/flowpowered/network/exception/class-use/IllegalOpcodeException.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.exception.IllegalOpcodeException (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/class-use/UnknownPacketException.html b/com/flowpowered/network/exception/class-use/UnknownPacketException.html
new file mode 100644
index 0000000..b6f956c
--- /dev/null
+++ b/com/flowpowered/network/exception/class-use/UnknownPacketException.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.exception.UnknownPacketException (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/package-frame.html b/com/flowpowered/network/exception/package-frame.html
new file mode 100644
index 0000000..9b45d7d
--- /dev/null
+++ b/com/flowpowered/network/exception/package-frame.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+com.flowpowered.network.exception (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
diff --git a/com/flowpowered/network/exception/package-summary.html b/com/flowpowered/network/exception/package-summary.html
new file mode 100644
index 0000000..5355c59
--- /dev/null
+++ b/com/flowpowered/network/exception/package-summary.html
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+com.flowpowered.network.exception (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/package-tree.html b/com/flowpowered/network/exception/package-tree.html
new file mode 100644
index 0000000..a8ec444
--- /dev/null
+++ b/com/flowpowered/network/exception/package-tree.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+com.flowpowered.network.exception Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/exception/package-use.html b/com/flowpowered/network/exception/package-use.html
new file mode 100644
index 0000000..630365a
--- /dev/null
+++ b/com/flowpowered/network/exception/package-use.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.exception (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/package-frame.html b/com/flowpowered/network/package-frame.html
new file mode 100644
index 0000000..d30902d
--- /dev/null
+++ b/com/flowpowered/network/package-frame.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+com.flowpowered.network (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
Interfaces
+
+
Classes
+
+
+
+
diff --git a/com/flowpowered/network/package-summary.html b/com/flowpowered/network/package-summary.html
new file mode 100644
index 0000000..42a8306
--- /dev/null
+++ b/com/flowpowered/network/package-summary.html
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+com.flowpowered.network (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+AsyncableMessage
+
+
+
+Codec <T extends Message >
+
+Codecs are used to encode and decode a
Message into a
ByteBuf.
+
+
+
+ConnectionManager
+
+This class defines a basic structure for any object which manages connections.
+
+
+
+Message
+
+Implementers of this class represent the data of a message to be sent.
+
+
+
+MessageHandler <S extends Session ,T extends Message >
+
+Defines a class which handles a message of type T.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/package-tree.html b/com/flowpowered/network/package-tree.html
new file mode 100644
index 0000000..59b1b2c
--- /dev/null
+++ b/com/flowpowered/network/package-tree.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+com.flowpowered.network Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Class Hierarchy
+
+java.lang.Object
+
+io.netty.channel.ChannelHandlerAdapter (implements io.netty.channel.ChannelHandler)
+
+io.netty.channel.ChannelInboundHandlerAdapter (implements io.netty.channel.ChannelInboundHandler)
+
+io.netty.channel.ChannelInitializer<C>
+
+
+
+
+
+
+com.flowpowered.network.Codec.CodecRegistration
+com.flowpowered.network.NetworkClient (implements com.flowpowered.network.ConnectionManager )
+com.flowpowered.network.NetworkServer (implements com.flowpowered.network.ConnectionManager )
+
+
+
+
Interface Hierarchy
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/package-use.html b/com/flowpowered/network/package-use.html
new file mode 100644
index 0000000..962a523
--- /dev/null
+++ b/com/flowpowered/network/package-use.html
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/MessageDecoder.html b/com/flowpowered/network/pipeline/MessageDecoder.html
new file mode 100644
index 0000000..dff26e6
--- /dev/null
+++ b/com/flowpowered/network/pipeline/MessageDecoder.html
@@ -0,0 +1,381 @@
+
+
+
+
+
+
+MessageDecoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+io.netty.channel.ChannelHandlerAdapter
+
+
+io.netty.channel.ChannelInboundHandlerAdapter
+
+
+io.netty.handler.codec.ByteToMessageDecoder
+
+
+io.netty.handler.codec.ReplayingDecoder<io.netty.buffer.ByteBuf>
+
+
+com.flowpowered.network.pipeline.MessageDecoder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+Nested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder
+io.netty.handler.codec.ByteToMessageDecoder.Cumulator
+
+
+
+
+
+Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
+io.netty.channel.ChannelHandler.Sharable
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder
+COMPOSITE_CUMULATOR, MERGE_CUMULATOR
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class io.netty.handler.codec.ReplayingDecoder
+callDecode, channelInactive, checkpoint, checkpoint, state, state
+
+
+
+
+
+Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder
+actualReadableBytes, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
+channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelHandlerAdapter
+handlerAdded, isSharable
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+Methods inherited from interface io.netty.channel.ChannelHandler
+handlerAdded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/MessageEncoder.html b/com/flowpowered/network/pipeline/MessageEncoder.html
new file mode 100644
index 0000000..94c3e59
--- /dev/null
+++ b/com/flowpowered/network/pipeline/MessageEncoder.html
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+MessageEncoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+io.netty.channel.ChannelHandlerAdapter
+
+
+io.netty.channel.ChannelOutboundHandlerAdapter
+
+
+io.netty.handler.codec.MessageToMessageEncoder<Message >
+
+
+com.flowpowered.network.pipeline.MessageEncoder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
+io.netty.channel.ChannelHandler.Sharable
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class io.netty.handler.codec.MessageToMessageEncoder
+acceptOutboundMessage, write
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelOutboundHandlerAdapter
+bind, close, connect, deregister, disconnect, flush, read
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelHandlerAdapter
+exceptionCaught, handlerAdded, handlerRemoved, isSharable
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+Methods inherited from interface io.netty.channel.ChannelHandler
+exceptionCaught, handlerAdded, handlerRemoved
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/MessageHandler.html b/com/flowpowered/network/pipeline/MessageHandler.html
new file mode 100644
index 0000000..74b3d6f
--- /dev/null
+++ b/com/flowpowered/network/pipeline/MessageHandler.html
@@ -0,0 +1,432 @@
+
+
+
+
+
+
+MessageHandler (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+io.netty.channel.ChannelHandlerAdapter
+
+
+io.netty.channel.ChannelInboundHandlerAdapter
+
+
+io.netty.channel.SimpleChannelInboundHandler<Message >
+
+
+com.flowpowered.network.pipeline.MessageHandler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
+io.netty.channel.ChannelHandler.Sharable
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class io.netty.channel.SimpleChannelInboundHandler
+acceptInboundMessage, channelRead
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
+channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, userEventTriggered
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelHandlerAdapter
+handlerAdded, handlerRemoved, isSharable
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+Methods inherited from interface io.netty.channel.ChannelHandler
+handlerAdded, handlerRemoved
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/MessageProcessorDecoder.html b/com/flowpowered/network/pipeline/MessageProcessorDecoder.html
new file mode 100644
index 0000000..865f9c4
--- /dev/null
+++ b/com/flowpowered/network/pipeline/MessageProcessorDecoder.html
@@ -0,0 +1,381 @@
+
+
+
+
+
+
+MessageProcessorDecoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+io.netty.channel.ChannelHandlerAdapter
+
+
+io.netty.channel.ChannelInboundHandlerAdapter
+
+
+io.netty.handler.codec.ByteToMessageDecoder
+
+
+com.flowpowered.network.pipeline.MessageProcessorDecoder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+Nested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder
+io.netty.handler.codec.ByteToMessageDecoder.Cumulator
+
+
+
+
+
+Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
+io.netty.channel.ChannelHandler.Sharable
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder
+COMPOSITE_CUMULATOR, MERGE_CUMULATOR
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder
+actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
+channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelHandlerAdapter
+handlerAdded, isSharable
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+Methods inherited from interface io.netty.channel.ChannelHandler
+handlerAdded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/MessageProcessorEncoder.html b/com/flowpowered/network/pipeline/MessageProcessorEncoder.html
new file mode 100644
index 0000000..8602e79
--- /dev/null
+++ b/com/flowpowered/network/pipeline/MessageProcessorEncoder.html
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+MessageProcessorEncoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+io.netty.channel.ChannelHandlerAdapter
+
+
+io.netty.channel.ChannelOutboundHandlerAdapter
+
+
+io.netty.handler.codec.MessageToMessageEncoder<io.netty.buffer.ByteBuf>
+
+
+com.flowpowered.network.pipeline.MessageProcessorEncoder
+
+
+
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+io.netty.channel.ChannelHandler, io.netty.channel.ChannelOutboundHandler
+
+
+
+public class MessageProcessorEncoder
+extends io.netty.handler.codec.MessageToMessageEncoder<io.netty.buffer.ByteBuf>
+This class provides a layer of processing after encode but before the message is passed outbound.
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
+io.netty.channel.ChannelHandler.Sharable
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class io.netty.handler.codec.MessageToMessageEncoder
+acceptOutboundMessage, write
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelOutboundHandlerAdapter
+bind, close, connect, deregister, disconnect, flush, read
+
+
+
+
+
+Methods inherited from class io.netty.channel.ChannelHandlerAdapter
+exceptionCaught, handlerAdded, handlerRemoved, isSharable
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+Methods inherited from interface io.netty.channel.ChannelHandler
+exceptionCaught, handlerAdded, handlerRemoved
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/class-use/MessageDecoder.html b/com/flowpowered/network/pipeline/class-use/MessageDecoder.html
new file mode 100644
index 0000000..9a1a8f5
--- /dev/null
+++ b/com/flowpowered/network/pipeline/class-use/MessageDecoder.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.pipeline.MessageDecoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.pipeline.MessageDecoder
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/class-use/MessageEncoder.html b/com/flowpowered/network/pipeline/class-use/MessageEncoder.html
new file mode 100644
index 0000000..38e832e
--- /dev/null
+++ b/com/flowpowered/network/pipeline/class-use/MessageEncoder.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.pipeline.MessageEncoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.pipeline.MessageEncoder
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/class-use/MessageHandler.html b/com/flowpowered/network/pipeline/class-use/MessageHandler.html
new file mode 100644
index 0000000..ce8d43e
--- /dev/null
+++ b/com/flowpowered/network/pipeline/class-use/MessageHandler.html
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.pipeline.MessageHandler (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/class-use/MessageProcessorDecoder.html b/com/flowpowered/network/pipeline/class-use/MessageProcessorDecoder.html
new file mode 100644
index 0000000..d5a106f
--- /dev/null
+++ b/com/flowpowered/network/pipeline/class-use/MessageProcessorDecoder.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.pipeline.MessageProcessorDecoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.pipeline.MessageProcessorDecoder
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/class-use/MessageProcessorEncoder.html b/com/flowpowered/network/pipeline/class-use/MessageProcessorEncoder.html
new file mode 100644
index 0000000..3523460
--- /dev/null
+++ b/com/flowpowered/network/pipeline/class-use/MessageProcessorEncoder.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.pipeline.MessageProcessorEncoder (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.pipeline.MessageProcessorEncoder
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/package-frame.html b/com/flowpowered/network/pipeline/package-frame.html
new file mode 100644
index 0000000..e4b62e0
--- /dev/null
+++ b/com/flowpowered/network/pipeline/package-frame.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+com.flowpowered.network.pipeline (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
diff --git a/com/flowpowered/network/pipeline/package-summary.html b/com/flowpowered/network/pipeline/package-summary.html
new file mode 100644
index 0000000..4653637
--- /dev/null
+++ b/com/flowpowered/network/pipeline/package-summary.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+com.flowpowered.network.pipeline (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/package-tree.html b/com/flowpowered/network/pipeline/package-tree.html
new file mode 100644
index 0000000..4b2af99
--- /dev/null
+++ b/com/flowpowered/network/pipeline/package-tree.html
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+com.flowpowered.network.pipeline Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Class Hierarchy
+
+java.lang.Object
+
+io.netty.channel.ChannelHandlerAdapter (implements io.netty.channel.ChannelHandler)
+
+io.netty.channel.ChannelInboundHandlerAdapter (implements io.netty.channel.ChannelInboundHandler)
+
+io.netty.handler.codec.ByteToMessageDecoder
+
+
+io.netty.channel.SimpleChannelInboundHandler<I>
+
+
+
+
+io.netty.channel.ChannelOutboundHandlerAdapter (implements io.netty.channel.ChannelOutboundHandler)
+
+io.netty.handler.codec.MessageToMessageEncoder<I>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/pipeline/package-use.html b/com/flowpowered/network/pipeline/package-use.html
new file mode 100644
index 0000000..e23782e
--- /dev/null
+++ b/com/flowpowered/network/pipeline/package-use.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.pipeline (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/MessageProcessor.html b/com/flowpowered/network/processor/MessageProcessor.html
new file mode 100644
index 0000000..bca8fd3
--- /dev/null
+++ b/com/flowpowered/network/processor/MessageProcessor.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+MessageProcessor (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method and Description
+
+
+io.netty.buffer.ByteBuf
+processInbound (io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer.
+
+
+
+io.netty.buffer.ByteBuf
+processOutbound (io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+processOutbound
+io.netty.buffer.ByteBuf processOutbound(io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer. The method may be called from multiple threads.
+ This is called after Codec.encode, but before the message is sent.
+ input.release should NOT be called; it is done externally.
+ buffer.release should NOT be called; it is done externally.
+
+Parameters:
+ctx - the channel handler context
+input - the buffer containing the input data
+buffer - the buffer to add the data to; will be dynamically-sized
+Returns:
+the processed outbound ByteBuf
+
+
+
+
+
+
+
+
+processInbound
+io.netty.buffer.ByteBuf processInbound(io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer. The method may be called from multiple threads.
+ This should read as much data from input as possible. It does not replay.
+ This is called after the message arrives, but before Codec.decode is called.
+ input.release should NOT be called; it is done externally.
+ buffer.release should NOT be called; it is done externally.
+
+Parameters:
+ctx - the channel handler context
+input - the buffer containing the input data
+buffer - the buffer to add the data to; will be dynamically-sized
+Returns:
+the processed inbound buffer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/class-use/MessageProcessor.html b/com/flowpowered/network/processor/class-use/MessageProcessor.html
new file mode 100644
index 0000000..bff2ae4
--- /dev/null
+++ b/com/flowpowered/network/processor/class-use/MessageProcessor.html
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.processor.MessageProcessor (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/package-frame.html b/com/flowpowered/network/processor/package-frame.html
new file mode 100644
index 0000000..d85e62e
--- /dev/null
+++ b/com/flowpowered/network/processor/package-frame.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+com.flowpowered.network.processor (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
diff --git a/com/flowpowered/network/processor/package-summary.html b/com/flowpowered/network/processor/package-summary.html
new file mode 100644
index 0000000..daf5e04
--- /dev/null
+++ b/com/flowpowered/network/processor/package-summary.html
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+com.flowpowered.network.processor (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+MessageProcessor
+
+MessageProcessor can be used in a PreprocessReplayingDecoder or ProcessingEncoder to define
+ how a ByteBuf should be processed prior to decode or after encode.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/package-tree.html b/com/flowpowered/network/processor/package-tree.html
new file mode 100644
index 0000000..3ccb7fa
--- /dev/null
+++ b/com/flowpowered/network/processor/package-tree.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+com.flowpowered.network.processor Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/package-use.html b/com/flowpowered/network/processor/package-use.html
new file mode 100644
index 0000000..b22336d
--- /dev/null
+++ b/com/flowpowered/network/processor/package-use.html
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.processor (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/simple/SimpleMessageProcessor.html b/com/flowpowered/network/processor/simple/SimpleMessageProcessor.html
new file mode 100644
index 0000000..0f372f1
--- /dev/null
+++ b/com/flowpowered/network/processor/simple/SimpleMessageProcessor.html
@@ -0,0 +1,461 @@
+
+
+
+
+
+
+SimpleMessageProcessor (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+
+
+
+
+
+
+All Implemented Interfaces:
+MessageProcessor
+
+
+
+public abstract class SimpleMessageProcessor
+extends Object
+implements MessageProcessor
+Bridge class for passing ByteBufs through byte array read/write processing. This is only only one DividedMessageProcessorPart and must use a DividedMessageProcessor
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field and Description
+
+
+protected int
+capacity
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods Concrete Methods
+
+Modifier and Type
+Method and Description
+
+
+io.netty.buffer.ByteBuf
+processInbound (io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer.
+
+
+
+io.netty.buffer.ByteBuf
+processOutbound (io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer.
+
+
+
+protected abstract int
+readDecode (byte[] buf)
+Reads the data from the processor into the given array This method does not need to be thread safe
+
+
+
+protected abstract int
+readEncode (byte[] buf)
+Reads the data from the processor into the given array This method does not need to be thread safe
+
+
+
+protected abstract void
+writeDecode (byte[] buf,
+ int length)
+Writes data to the processor This method does not need to be thread safe
+
+
+
+protected abstract void
+writeEncode (byte[] buf,
+ int length)
+Writes data to the processor This method does not need to be thread safe
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+processOutbound
+public final io.netty.buffer.ByteBuf processOutbound(io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer. The method may be called from multiple threads.
+ This is called after Codec.encode, but before the message is sent.
+ input.release should NOT be called; it is done externally.
+ buffer.release should NOT be called; it is done externally.
+
+Specified by:
+processOutbound in interface MessageProcessor
+Parameters:
+ctx - the channel handler context
+input - the buffer containing the input data
+buffer - the buffer to add the data to; will be dynamically-sized
+Returns:
+the processed outbound ByteBuf
+
+
+
+
+
+
+
+
+writeEncode
+protected abstract void writeEncode(byte[] buf,
+ int length)
+Writes data to the processor This method does not need to be thread safe
+
+Parameters:
+buf - a buffer containing the data
+length - the length of the data to process
+
+
+
+
+
+
+
+
+
+
+
+
+processInbound
+public final io.netty.buffer.ByteBuf processInbound(io.netty.channel.ChannelHandlerContext ctx,
+ io.netty.buffer.ByteBuf input,
+ io.netty.buffer.ByteBuf buffer)
+
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer. The method may be called from multiple threads.
+ This should read as much data from input as possible. It does not replay.
+ This is called after the message arrives, but before Codec.decode is called.
+ input.release should NOT be called; it is done externally.
+ buffer.release should NOT be called; it is done externally.
+
+Specified by:
+processInbound in interface MessageProcessor
+Parameters:
+ctx - the channel handler context
+input - the buffer containing the input data
+buffer - the buffer to add the data to; will be dynamically-sized
+Returns:
+the processed inbound buffer
+
+
+
+
+
+
+
+
+writeDecode
+protected abstract void writeDecode(byte[] buf,
+ int length)
+Writes data to the processor This method does not need to be thread safe
+
+Parameters:
+buf - a buffer containing the data
+length - the length of the data to process
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/simple/class-use/SimpleMessageProcessor.html b/com/flowpowered/network/processor/simple/class-use/SimpleMessageProcessor.html
new file mode 100644
index 0000000..f9e802e
--- /dev/null
+++ b/com/flowpowered/network/processor/simple/class-use/SimpleMessageProcessor.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.processor.simple.SimpleMessageProcessor (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/simple/package-frame.html b/com/flowpowered/network/processor/simple/package-frame.html
new file mode 100644
index 0000000..bfbb06e
--- /dev/null
+++ b/com/flowpowered/network/processor/simple/package-frame.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+com.flowpowered.network.processor.simple (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
diff --git a/com/flowpowered/network/processor/simple/package-summary.html b/com/flowpowered/network/processor/simple/package-summary.html
new file mode 100644
index 0000000..5572a73
--- /dev/null
+++ b/com/flowpowered/network/processor/simple/package-summary.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+com.flowpowered.network.processor.simple (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+SimpleMessageProcessor
+
+Bridge class for passing ByteBufs through byte array read/write processing.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/simple/package-tree.html b/com/flowpowered/network/processor/simple/package-tree.html
new file mode 100644
index 0000000..6eb2eba
--- /dev/null
+++ b/com/flowpowered/network/processor/simple/package-tree.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+com.flowpowered.network.processor.simple Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/processor/simple/package-use.html b/com/flowpowered/network/processor/simple/package-use.html
new file mode 100644
index 0000000..5b20aec
--- /dev/null
+++ b/com/flowpowered/network/processor/simple/package-use.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.processor.simple (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.processor.simple
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/AbstractProtocol.html b/com/flowpowered/network/protocol/AbstractProtocol.html
new file mode 100644
index 0000000..ed490e8
--- /dev/null
+++ b/com/flowpowered/network/protocol/AbstractProtocol.html
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+AbstractProtocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getWrappedMessage
+public <T extends Message > Message getWrappedMessage(T dynamicMessage)
+ throws IOException
+Allows applying a wrapper to messages with dynamically allocated id's, in case this protocol needs to provide special treatment for them.
+
+Parameters:
+dynamicMessage - The message with a dynamically-allocated codec
+Returns:
+The new message
+Throws:
+IOException
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/Protocol.html b/com/flowpowered/network/protocol/Protocol.html
new file mode 100644
index 0000000..38e0d3d
--- /dev/null
+++ b/com/flowpowered/network/protocol/Protocol.html
@@ -0,0 +1,308 @@
+
+
+
+
+
+
+Protocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getName
+String getName()
+
+Returns:
+the name of this Protocol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+writeHeader
+io.netty.buffer.ByteBuf writeHeader(io.netty.buffer.ByteBuf header,
+ Codec.CodecRegistration codec,
+ io.netty.buffer.ByteBuf data)
+Writes a packet header to a new buffer.
+
+Parameters:
+header - the buffer which to write the header to
+codec - The codec the message was written with
+data - The data from the encoded message
+Returns:
+the header ByteBuf to use
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/ProtocolRegistry.html b/com/flowpowered/network/protocol/ProtocolRegistry.html
new file mode 100644
index 0000000..1e240c2
--- /dev/null
+++ b/com/flowpowered/network/protocol/ProtocolRegistry.html
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+ProtocolRegistry (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+com.flowpowered.network.protocol.ProtocolRegistry<T>
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getProtocol
+public T getProtocol(SocketAddress address)
+Gets the Protocol associated with a particular SocketAddress, checking by port if possible.
+
+Parameters:
+address - the address
+Returns:
+the Protocol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/class-use/AbstractProtocol.html b/com/flowpowered/network/protocol/class-use/AbstractProtocol.html
new file mode 100644
index 0000000..d9216fd
--- /dev/null
+++ b/com/flowpowered/network/protocol/class-use/AbstractProtocol.html
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.protocol.AbstractProtocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/class-use/Protocol.html b/com/flowpowered/network/protocol/class-use/Protocol.html
new file mode 100644
index 0000000..6bb571e
--- /dev/null
+++ b/com/flowpowered/network/protocol/class-use/Protocol.html
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.protocol.Protocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/class-use/ProtocolRegistry.html b/com/flowpowered/network/protocol/class-use/ProtocolRegistry.html
new file mode 100644
index 0000000..779bbf0
--- /dev/null
+++ b/com/flowpowered/network/protocol/class-use/ProtocolRegistry.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.protocol.ProtocolRegistry (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.protocol.ProtocolRegistry
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/keyed/KeyedProtocol.html b/com/flowpowered/network/protocol/keyed/KeyedProtocol.html
new file mode 100644
index 0000000..1dcbed3
--- /dev/null
+++ b/com/flowpowered/network/protocol/keyed/KeyedProtocol.html
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+KeyedProtocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/keyed/class-use/KeyedProtocol.html b/com/flowpowered/network/protocol/keyed/class-use/KeyedProtocol.html
new file mode 100644
index 0000000..b7af16d
--- /dev/null
+++ b/com/flowpowered/network/protocol/keyed/class-use/KeyedProtocol.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.protocol.keyed.KeyedProtocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.protocol.keyed.KeyedProtocol
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/keyed/package-frame.html b/com/flowpowered/network/protocol/keyed/package-frame.html
new file mode 100644
index 0000000..0fd3728
--- /dev/null
+++ b/com/flowpowered/network/protocol/keyed/package-frame.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol.keyed (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
diff --git a/com/flowpowered/network/protocol/keyed/package-summary.html b/com/flowpowered/network/protocol/keyed/package-summary.html
new file mode 100644
index 0000000..f9bc855
--- /dev/null
+++ b/com/flowpowered/network/protocol/keyed/package-summary.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol.keyed (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+KeyedProtocol
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/keyed/package-tree.html b/com/flowpowered/network/protocol/keyed/package-tree.html
new file mode 100644
index 0000000..576145a
--- /dev/null
+++ b/com/flowpowered/network/protocol/keyed/package-tree.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol.keyed Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/keyed/package-use.html b/com/flowpowered/network/protocol/keyed/package-use.html
new file mode 100644
index 0000000..0cee2f5
--- /dev/null
+++ b/com/flowpowered/network/protocol/keyed/package-use.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.protocol.keyed (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.protocol.keyed
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/package-frame.html b/com/flowpowered/network/protocol/package-frame.html
new file mode 100644
index 0000000..021ac8c
--- /dev/null
+++ b/com/flowpowered/network/protocol/package-frame.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
Interfaces
+
+
Classes
+
+
+
+
diff --git a/com/flowpowered/network/protocol/package-summary.html b/com/flowpowered/network/protocol/package-summary.html
new file mode 100644
index 0000000..c0be879
--- /dev/null
+++ b/com/flowpowered/network/protocol/package-summary.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+Protocol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/package-tree.html b/com/flowpowered/network/protocol/package-tree.html
new file mode 100644
index 0000000..79c0b4d
--- /dev/null
+++ b/com/flowpowered/network/protocol/package-tree.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Class Hierarchy
+
+
Interface Hierarchy
+
+com.flowpowered.network.protocol.Protocol
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/package-use.html b/com/flowpowered/network/protocol/package-use.html
new file mode 100644
index 0000000..7603aa4
--- /dev/null
+++ b/com/flowpowered/network/protocol/package-use.html
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.protocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/simple/SimpleProtocol.html b/com/flowpowered/network/protocol/simple/SimpleProtocol.html
new file mode 100644
index 0000000..c468b4e
--- /dev/null
+++ b/com/flowpowered/network/protocol/simple/SimpleProtocol.html
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+SimpleProtocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Prev Class
+Next Class
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/simple/class-use/SimpleProtocol.html b/com/flowpowered/network/protocol/simple/class-use/SimpleProtocol.html
new file mode 100644
index 0000000..9ecf38d
--- /dev/null
+++ b/com/flowpowered/network/protocol/simple/class-use/SimpleProtocol.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.protocol.simple.SimpleProtocol (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.protocol.simple.SimpleProtocol
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/simple/package-frame.html b/com/flowpowered/network/protocol/simple/package-frame.html
new file mode 100644
index 0000000..a379d5a
--- /dev/null
+++ b/com/flowpowered/network/protocol/simple/package-frame.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol.simple (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
diff --git a/com/flowpowered/network/protocol/simple/package-summary.html b/com/flowpowered/network/protocol/simple/package-summary.html
new file mode 100644
index 0000000..3d2dfd4
--- /dev/null
+++ b/com/flowpowered/network/protocol/simple/package-summary.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol.simple (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+SimpleProtocol
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/simple/package-tree.html b/com/flowpowered/network/protocol/simple/package-tree.html
new file mode 100644
index 0000000..b7ba01d
--- /dev/null
+++ b/com/flowpowered/network/protocol/simple/package-tree.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+com.flowpowered.network.protocol.simple Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/protocol/simple/package-use.html b/com/flowpowered/network/protocol/simple/package-use.html
new file mode 100644
index 0000000..511c10d
--- /dev/null
+++ b/com/flowpowered/network/protocol/simple/package-use.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.protocol.simple (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.protocol.simple
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/service/CodecLookupService.html b/com/flowpowered/network/service/CodecLookupService.html
new file mode 100644
index 0000000..4b88fc7
--- /dev/null
+++ b/com/flowpowered/network/service/CodecLookupService.html
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+CodecLookupService (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+bind
+public <M extends Message ,C extends Codec <? super M>> Codec.CodecRegistration bind(Class <M> messageClazz,
+ Class <C> codecClazz,
+ Integer opcode)
+ throws InstantiationException ,
+ IllegalAccessException ,
+ InvocationTargetException
+Binds a codec by adding entries for it to the tables. TODO: if a dynamic opcode is registered then a static opcode tries to register, reassign dynamic. TODO: if a static opcode is registered then
+ a static opcode tries to register, throw exception
+
+Type Parameters:
+M - The type of message
+C - The type of codec.
+Parameters:
+messageClazz - The message's class
+codecClazz - The codec's class.
+opcode - the opcode to register with, or null if the codec should be dynamic
+Returns:
+the registration object of the codec
+Throws:
+InstantiationException - if the codec could not be instantiated.
+IllegalAccessException - if the codec could not be instantiated due to an access violation.
+InvocationTargetException
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/service/HandlerLookupService.html b/com/flowpowered/network/service/HandlerLookupService.html
new file mode 100644
index 0000000..5c21d03
--- /dev/null
+++ b/com/flowpowered/network/service/HandlerLookupService.html
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+HandlerLookupService (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+com.flowpowered.network.service.HandlerLookupService
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/service/class-use/CodecLookupService.html b/com/flowpowered/network/service/class-use/CodecLookupService.html
new file mode 100644
index 0000000..7b567e7
--- /dev/null
+++ b/com/flowpowered/network/service/class-use/CodecLookupService.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.service.CodecLookupService (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/service/class-use/HandlerLookupService.html b/com/flowpowered/network/service/class-use/HandlerLookupService.html
new file mode 100644
index 0000000..b018f62
--- /dev/null
+++ b/com/flowpowered/network/service/class-use/HandlerLookupService.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.service.HandlerLookupService (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/service/package-frame.html b/com/flowpowered/network/service/package-frame.html
new file mode 100644
index 0000000..e60ce49
--- /dev/null
+++ b/com/flowpowered/network/service/package-frame.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+com.flowpowered.network.service (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
diff --git a/com/flowpowered/network/service/package-summary.html b/com/flowpowered/network/service/package-summary.html
new file mode 100644
index 0000000..87e1efa
--- /dev/null
+++ b/com/flowpowered/network/service/package-summary.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+com.flowpowered.network.service (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/service/package-tree.html b/com/flowpowered/network/service/package-tree.html
new file mode 100644
index 0000000..5896d5e
--- /dev/null
+++ b/com/flowpowered/network/service/package-tree.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+com.flowpowered.network.service Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/service/package-use.html b/com/flowpowered/network/service/package-use.html
new file mode 100644
index 0000000..69f9e9b
--- /dev/null
+++ b/com/flowpowered/network/service/package-use.html
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.service (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/BasicSession.html b/com/flowpowered/network/session/BasicSession.html
new file mode 100644
index 0000000..fafd161
--- /dev/null
+++ b/com/flowpowered/network/session/BasicSession.html
@@ -0,0 +1,665 @@
+
+
+
+
+
+
+BasicSession (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor and Description
+
+
+BasicSession (io.netty.channel.Channel channel,
+ AbstractProtocol bootstrapProtocol)
+Creates a new session.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+isActive
+public boolean isActive()
+True if this session is open and connected. If the session is closed, errors will be thrown if messages are attempted to be sent.
+
+Returns:
+is active
+
+
+
+
+
+
+
+
+
+
+
+
+disconnect
+public void disconnect()
+Description copied from interface: Session
+Closes the session.
+
+Specified by:
+disconnect in interface Session
+
+
+
+
+
+
+
+
+onDisconnect
+public void onDisconnect()
+Description copied from interface: Session
+Called after the Session has been disconnected, right before the Session is invalidated.
+
+Specified by:
+onDisconnect in interface Session
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+onHandlerThrowable
+public void onHandlerThrowable(Message message,
+ MessageHandler <?,?> handle,
+ Throwable throwable)
+Called when an exception occurs during session handling
+
+Parameters:
+message - the message handler threw an exception on
+handle - handler that threw the an exception handling the message
+throwable - the throwable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/PulsingSession.SendType.html b/com/flowpowered/network/session/PulsingSession.SendType.html
new file mode 100644
index 0000000..ef87e5b
--- /dev/null
+++ b/com/flowpowered/network/session/PulsingSession.SendType.html
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+PulsingSession.SendType (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Enum Constant Summary
+
+Enum Constants
+
+Enum Constant and Description
+
+
+FORCE
+Messages sent with a SendType of FORCE will send as soon as possible regardless of State.
+
+
+
+OPEN_ONLY
+Messages sent with a SendType of OPEN_ONLY will only send if State is OPEN.
+
+
+
+QUEUE
+Messages sent with a SendType of QUEUE will wait until State is OPEN to send.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+valueOf
+public static PulsingSession.SendType valueOf(String name)
+Returns the enum constant of this type with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this type. (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 type has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/PulsingSession.State.html b/com/flowpowered/network/session/PulsingSession.State.html
new file mode 100644
index 0000000..1c52b79
--- /dev/null
+++ b/com/flowpowered/network/session/PulsingSession.State.html
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+PulsingSession.State (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Enum Constant Summary
+
+Enum Constants
+
+Enum Constant and Description
+
+
+EXCHANGE_ENCRYPTION
+In the exchange encryption state, the server is waiting for the client to send its encryption
+ response packet.
+
+
+
+EXCHANGE_HANDSHAKE
+In the exchange handshake state, the server is waiting for the client to send its initial handshake
+ packet.
+
+
+
+EXCHANGE_IDENTIFICATION
+In the exchange identification state, the server is waiting for the client to send its identification
+ packet.
+
+
+
+OPEN
+Allows messages to be sent.
+
+
+
+WAITING
+This state is when a critical message has been sent that must be waited for.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Enum Constant Detail
+
+
+
+
+
+EXCHANGE_HANDSHAKE
+public static final PulsingSession.State EXCHANGE_HANDSHAKE
+In the exchange handshake state, the server is waiting for the client to send its initial handshake
+ packet.
+
+
+
+
+
+
+
+EXCHANGE_IDENTIFICATION
+public static final PulsingSession.State EXCHANGE_IDENTIFICATION
+In the exchange identification state, the server is waiting for the client to send its identification
+ packet.
+
+
+
+
+
+
+
+EXCHANGE_ENCRYPTION
+public static final PulsingSession.State EXCHANGE_ENCRYPTION
+In the exchange encryption state, the server is waiting for the client to send its encryption
+ response packet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+valueOf
+public static PulsingSession.State valueOf(String name)
+Returns the enum constant of this type with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this type. (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 type has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/PulsingSession.html b/com/flowpowered/network/session/PulsingSession.html
new file mode 100644
index 0000000..2f13c81
--- /dev/null
+++ b/com/flowpowered/network/session/PulsingSession.html
@@ -0,0 +1,476 @@
+
+
+
+
+
+
+PulsingSession (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor and Description
+
+
+PulsingSession (io.netty.channel.Channel channel,
+ AbstractProtocol bootstrapProtocol)
+Creates a new pulsing session.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class com.flowpowered.network.session.BasicSession
+disconnect , getAddress , getChannel , getLogger , getProcessor , getProtocol , getSessionId , isActive , onDisconnect , onHandlerThrowable , onInboundThrowable , onOutboundThrowable , onReady , sendWithFuture , setOption , setProtocol , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+PulsingSession
+public PulsingSession(io.netty.channel.Channel channel,
+ AbstractProtocol bootstrapProtocol)
+Creates a new pulsing session.
+
+Parameters:
+channel - The channel associated with this session.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/Session.html b/com/flowpowered/network/session/Session.html
new file mode 100644
index 0000000..8d6354a
--- /dev/null
+++ b/com/flowpowered/network/session/Session.html
@@ -0,0 +1,399 @@
+
+
+
+
+
+
+Session (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/class-use/BasicSession.html b/com/flowpowered/network/session/class-use/BasicSession.html
new file mode 100644
index 0000000..374059a
--- /dev/null
+++ b/com/flowpowered/network/session/class-use/BasicSession.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.session.BasicSession (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/class-use/PulsingSession.SendType.html b/com/flowpowered/network/session/class-use/PulsingSession.SendType.html
new file mode 100644
index 0000000..dcc24b6
--- /dev/null
+++ b/com/flowpowered/network/session/class-use/PulsingSession.SendType.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.session.PulsingSession.SendType (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/class-use/PulsingSession.State.html b/com/flowpowered/network/session/class-use/PulsingSession.State.html
new file mode 100644
index 0000000..3afd64e
--- /dev/null
+++ b/com/flowpowered/network/session/class-use/PulsingSession.State.html
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.session.PulsingSession.State (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/class-use/PulsingSession.html b/com/flowpowered/network/session/class-use/PulsingSession.html
new file mode 100644
index 0000000..d38fb50
--- /dev/null
+++ b/com/flowpowered/network/session/class-use/PulsingSession.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.session.PulsingSession (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.session.PulsingSession
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/class-use/Session.html b/com/flowpowered/network/session/class-use/Session.html
new file mode 100644
index 0000000..0617fa7
--- /dev/null
+++ b/com/flowpowered/network/session/class-use/Session.html
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+Uses of Interface com.flowpowered.network.session.Session (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/package-frame.html b/com/flowpowered/network/session/package-frame.html
new file mode 100644
index 0000000..7b13c60
--- /dev/null
+++ b/com/flowpowered/network/session/package-frame.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+com.flowpowered.network.session (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
Interfaces
+
+
Classes
+
+
Enums
+
+
+
+
diff --git a/com/flowpowered/network/session/package-summary.html b/com/flowpowered/network/session/package-summary.html
new file mode 100644
index 0000000..85cd588
--- /dev/null
+++ b/com/flowpowered/network/session/package-summary.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+com.flowpowered.network.session (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+Session
+
+Represents a connection to another engine.
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+BasicSession
+
+A basic implementation of a
Session which handles and sends messages instantly.
+
+
+
+PulsingSession
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/package-tree.html b/com/flowpowered/network/session/package-tree.html
new file mode 100644
index 0000000..f780590
--- /dev/null
+++ b/com/flowpowered/network/session/package-tree.html
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+com.flowpowered.network.session Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Class Hierarchy
+
+java.lang.Object
+
+com.flowpowered.network.session.BasicSession (implements com.flowpowered.network.session.Session )
+
+
+
+
+
+
Interface Hierarchy
+
+com.flowpowered.network.session.Session
+
+
Enum Hierarchy
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/session/package-use.html b/com/flowpowered/network/session/package-use.html
new file mode 100644
index 0000000..810e524
--- /dev/null
+++ b/com/flowpowered/network/session/package-use.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.session (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/AnnotatedMessageHandler.Handle.html b/com/flowpowered/network/util/AnnotatedMessageHandler.Handle.html
new file mode 100644
index 0000000..ea6c834
--- /dev/null
+++ b/com/flowpowered/network/util/AnnotatedMessageHandler.Handle.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+AnnotatedMessageHandler.Handle (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/AnnotatedMessageHandler.html b/com/flowpowered/network/util/AnnotatedMessageHandler.html
new file mode 100644
index 0000000..3db9778
--- /dev/null
+++ b/com/flowpowered/network/util/AnnotatedMessageHandler.html
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+AnnotatedMessageHandler (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+com.flowpowered.network.util.AnnotatedMessageHandler
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Class and Description
+
+
+static interface
+AnnotatedMessageHandler.Handle
+The annotation to mark message handle methods.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor and Description
+
+
+AnnotatedMessageHandler (Object handler)
+Constructs a new annotated message handler using the passed object as the source of handle methods.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/ByteBufUtils.html b/com/flowpowered/network/util/ByteBufUtils.html
new file mode 100644
index 0000000..3692f36
--- /dev/null
+++ b/com/flowpowered/network/util/ByteBufUtils.html
@@ -0,0 +1,408 @@
+
+
+
+
+
+
+ByteBufUtils (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor and Description
+
+
+ByteBufUtils ()
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Concrete Methods
+
+Modifier and Type
+Method and Description
+
+
+static String
+readUTF8 (io.netty.buffer.ByteBuf buf)
+Reads an UTF8 string from a byte buffer.
+
+
+
+static int
+readVarInt (io.netty.buffer.ByteBuf buf)
+Reads an integer written into the byte buffer as one of various bit sizes.
+
+
+
+static long
+readVarLong (io.netty.buffer.ByteBuf buf)
+Reads an integer written into the byte buffer as one of various bit sizes.
+
+
+
+static void
+writeUTF8 (io.netty.buffer.ByteBuf buf,
+ String value)
+Writes an UTF8 string to a byte buffer.
+
+
+
+static void
+writeVarInt (io.netty.buffer.ByteBuf buf,
+ int value)
+Writes an integer into the byte buffer using the least possible amount of bits.
+
+
+
+static void
+writeVarLong (io.netty.buffer.ByteBuf buf,
+ long value)
+Writes an integer into the byte buffer using the least possible amount of bits.
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+ByteBufUtils
+public ByteBufUtils()
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+writeUTF8
+public static void writeUTF8(io.netty.buffer.ByteBuf buf,
+ String value)
+ throws IOException
+Writes an UTF8 string to a byte buffer.
+
+Parameters:
+buf - The byte buffer to write too
+value - The string to write
+Throws:
+IOException - If the writing fails
+
+
+
+
+
+
+
+
+
+
+
+
+writeVarInt
+public static void writeVarInt(io.netty.buffer.ByteBuf buf,
+ int value)
+Writes an integer into the byte buffer using the least possible amount of bits.
+
+Parameters:
+buf - The byte buffer to write too
+value - The integer value to write
+
+
+
+
+
+
+
+
+
+
+
+
+writeVarLong
+public static void writeVarLong(io.netty.buffer.ByteBuf buf,
+ long value)
+Writes an integer into the byte buffer using the least possible amount of bits.
+
+Parameters:
+buf - The byte buffer to write too
+value - The long value to write
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/class-use/AnnotatedMessageHandler.Handle.html b/com/flowpowered/network/util/class-use/AnnotatedMessageHandler.Handle.html
new file mode 100644
index 0000000..d06b0ff
--- /dev/null
+++ b/com/flowpowered/network/util/class-use/AnnotatedMessageHandler.Handle.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.util.AnnotatedMessageHandler.Handle (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.util.AnnotatedMessageHandler.Handle
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/class-use/AnnotatedMessageHandler.html b/com/flowpowered/network/util/class-use/AnnotatedMessageHandler.html
new file mode 100644
index 0000000..f452f9f
--- /dev/null
+++ b/com/flowpowered/network/util/class-use/AnnotatedMessageHandler.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.util.AnnotatedMessageHandler (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.util.AnnotatedMessageHandler
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/class-use/ByteBufUtils.html b/com/flowpowered/network/util/class-use/ByteBufUtils.html
new file mode 100644
index 0000000..47ef229
--- /dev/null
+++ b/com/flowpowered/network/util/class-use/ByteBufUtils.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Class com.flowpowered.network.util.ByteBufUtils (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.util.ByteBufUtils
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/package-frame.html b/com/flowpowered/network/util/package-frame.html
new file mode 100644
index 0000000..4ca5211
--- /dev/null
+++ b/com/flowpowered/network/util/package-frame.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+com.flowpowered.network.util (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
Classes
+
+
Annotation Types
+
+
+
+
diff --git a/com/flowpowered/network/util/package-summary.html b/com/flowpowered/network/util/package-summary.html
new file mode 100644
index 0000000..af81178
--- /dev/null
+++ b/com/flowpowered/network/util/package-summary.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+com.flowpowered.network.util (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+AnnotatedMessageHandler
+
+A class for handling messages with annotated methods referred to as handles.
+
+
+
+ByteBufUtils
+
+A class containing various utility methods that act on byte buffers.
+
+
+
+
+
+
+
+Annotation Types Summary
+
+Annotation Type
+Description
+
+
+
+AnnotatedMessageHandler.Handle
+
+The annotation to mark message handle methods.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/package-tree.html b/com/flowpowered/network/util/package-tree.html
new file mode 100644
index 0000000..c14e4d9
--- /dev/null
+++ b/com/flowpowered/network/util/package-tree.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+com.flowpowered.network.util Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Class Hierarchy
+
+
Annotation Type Hierarchy
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/com/flowpowered/network/util/package-use.html b/com/flowpowered/network/util/package-use.html
new file mode 100644
index 0000000..8cbca92
--- /dev/null
+++ b/com/flowpowered/network/util/package-use.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Uses of Package com.flowpowered.network.util (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+No usage of com.flowpowered.network.util
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/constant-values.html b/constant-values.html
new file mode 100644
index 0000000..230bc5a
--- /dev/null
+++ b/constant-values.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Constant Field Values (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/deprecated-list.html b/deprecated-list.html
new file mode 100644
index 0000000..b8d24d2
--- /dev/null
+++ b/deprecated-list.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+Deprecated List (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/gradle.properties b/gradle.properties
deleted file mode 100644
index 0a836bd..0000000
--- a/gradle.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-signing.keyId=
-signing.password=
-signing.secretKeyRingFile=
-sonatypeUsername=
-sonatypePassword=
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 667288a..0000000
Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index e17acdd..0000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-2.6-all.zip
diff --git a/gradlew b/gradlew
deleted file mode 100755
index 91a7e26..0000000
--- a/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
deleted file mode 100644
index 8a0b282..0000000
--- a/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/help-doc.html b/help-doc.html
new file mode 100644
index 0000000..4d54e61
--- /dev/null
+++ b/help-doc.html
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+API Help (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+Overview
+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+
+Package
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:
+
+Interfaces (italic)
+Classes
+Enums
+Exceptions
+Errors
+Annotation Types
+
+
+
+Class/Interface
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:
+
+Class inheritance diagram
+Direct Subclasses
+All Known Subinterfaces
+All Known Implementing Classes
+Class/interface declaration
+Class/interface description
+
+
+Nested Class Summary
+Field Summary
+Constructor Summary
+Method Summary
+
+
+Field Detail
+Constructor Detail
+Method Detail
+
+Each summary entry contains the first sentence from the detailed description for that item. 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.
+
+
+Annotation Type
+Each annotation type has its own separate page with the following sections:
+
+Annotation Type declaration
+Annotation Type description
+Required Element Summary
+Optional Element Summary
+Element Detail
+
+
+
+Enum
+Each enum has its own separate page with the following sections:
+
+Enum declaration
+Enum description
+Enum Constant Summary
+Enum Constant Detail
+
+
+
+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. The classes are organized by inheritance structure starting with java.lang.Object. The 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 "Tree" displays the hierarchy for only that package.
+
+
+
+Deprecated API
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+
+
+Index
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+
+
+Prev/Next
+These links take you to the next or previous class, interface, package, or related page.
+
+
+Frames/No Frames
+These links show and hide the HTML frames. All pages are available with or without frames.
+
+
+All Classes
+The All Classes link shows all classes and interfaces except non-static nested types.
+
+
+Serialized Form
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using 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.
+
+
+Constant Field Values
+The Constant Field Values page lists the static final fields and their values.
+
+
+
This help file applies to API documentation generated using the standard doclet.
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/index-all.html b/index-all.html
new file mode 100644
index 0000000..9398077
--- /dev/null
+++ b/index-all.html
@@ -0,0 +1,820 @@
+
+
+
+
+
+
+Index (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+A B C D E F G H I K M N O P R S T U V W
+
+
+
A
+
+AbstractProtocol - Class in com.flowpowered.network.protocol
+
+A AbstractProtocol stores to what port the protocol should be bound to.
+
+AbstractProtocol(String) - Constructor for class com.flowpowered.network.protocol.AbstractProtocol
+
+AbstractProtocol(String, Logger) - Constructor for class com.flowpowered.network.protocol.AbstractProtocol
+
+AnnotatedMessageHandler - Class in com.flowpowered.network.util
+
+A class for handling messages with annotated methods referred to as handles.
+
+AnnotatedMessageHandler(Object) - Constructor for class com.flowpowered.network.util.AnnotatedMessageHandler
+
+Constructs a new annotated message handler using the passed object as the source of handle methods.
+
+AnnotatedMessageHandler.Handle - Annotation Type in com.flowpowered.network.util
+
+The annotation to mark message handle methods.
+
+AsyncableMessage - Interface in com.flowpowered.network
+
+
+
+
+
+
B
+
+BasicChannelInitializer - Class in com.flowpowered.network
+
+Used to initialize the channels.
+
+BasicChannelInitializer(ConnectionManager) - Constructor for class com.flowpowered.network.BasicChannelInitializer
+
+BasicSession - Class in com.flowpowered.network.session
+
+A basic implementation of a
Session which handles and sends messages instantly.
+
+BasicSession(Channel, AbstractProtocol) - Constructor for class com.flowpowered.network.session.BasicSession
+
+Creates a new session.
+
+bind(SocketAddress) - Method in class com.flowpowered.network.NetworkServer
+
+bind(Class<M>, Class<C>, Integer) - Method in class com.flowpowered.network.service.CodecLookupService
+
+Binds a codec by adding entries for it to the tables.
+
+bind(Class<M>, Class<H>) - Method in class com.flowpowered.network.service.HandlerLookupService
+
+ByteBufUtils - Class in com.flowpowered.network.util
+
+A class containing various utility methods that act on byte buffers.
+
+ByteBufUtils() - Constructor for class com.flowpowered.network.util.ByteBufUtils
+
+
+
+
+
+
C
+
+capacity - Variable in class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+channelActive(ChannelHandlerContext) - Method in class com.flowpowered.network.pipeline.MessageHandler
+
+ChannelClosedException - Exception in com.flowpowered.network.exception
+
+ChannelClosedException() - Constructor for exception com.flowpowered.network.exception.ChannelClosedException
+
+ChannelClosedException(String) - Constructor for exception com.flowpowered.network.exception.ChannelClosedException
+
+channelInactive(ChannelHandlerContext) - Method in class com.flowpowered.network.pipeline.MessageHandler
+
+channelRead0(ChannelHandlerContext, Message) - Method in class com.flowpowered.network.pipeline.MessageHandler
+
+Codec <T extends Message > - Interface in com.flowpowered.network
+
+Codecs are used to encode and decode a
Message into a
ByteBuf.
+
+Codec.CodecRegistration - Class in com.flowpowered.network
+
+CodecLookupService - Class in com.flowpowered.network.service
+
+A class used to lookup message codecs.
+
+CodecLookupService(int) - Constructor for class com.flowpowered.network.service.CodecLookupService
+
+
+
+CodecRegistration(int, Codec<?>) - Constructor for class com.flowpowered.network.Codec.CodecRegistration
+
+com.flowpowered.network - package com.flowpowered.network
+
+com.flowpowered.network.exception - package com.flowpowered.network.exception
+
+com.flowpowered.network.pipeline - package com.flowpowered.network.pipeline
+
+com.flowpowered.network.processor - package com.flowpowered.network.processor
+
+com.flowpowered.network.processor.simple - package com.flowpowered.network.processor.simple
+
+com.flowpowered.network.protocol - package com.flowpowered.network.protocol
+
+com.flowpowered.network.protocol.keyed - package com.flowpowered.network.protocol.keyed
+
+com.flowpowered.network.protocol.simple - package com.flowpowered.network.protocol.simple
+
+com.flowpowered.network.service - package com.flowpowered.network.service
+
+com.flowpowered.network.session - package com.flowpowered.network.session
+
+com.flowpowered.network.util - package com.flowpowered.network.util
+
+connect(SocketAddress) - Method in class com.flowpowered.network.NetworkClient
+
+ConnectionManager - Interface in com.flowpowered.network
+
+This class defines a basic structure for any object which manages connections.
+
+
+
+
+
+
D
+
+decode(ByteBuf) - Method in interface com.flowpowered.network.Codec
+
+
+
+decode(ChannelHandlerContext, ByteBuf, List<Object>) - Method in class com.flowpowered.network.pipeline.MessageDecoder
+
+decode(ChannelHandlerContext, ByteBuf, List<Object>) - Method in class com.flowpowered.network.pipeline.MessageProcessorDecoder
+
+disconnect() - Method in class com.flowpowered.network.session.BasicSession
+
+disconnect() - Method in interface com.flowpowered.network.session.Session
+
+Closes the session.
+
+
+
+
+
+
E
+
+encode(ByteBuf, T) - Method in interface com.flowpowered.network.Codec
+
+Encodes a
Message into a
ByteBuffer.
+
+encode(ChannelHandlerContext, Message, List<Object>) - Method in class com.flowpowered.network.pipeline.MessageEncoder
+
+encode(ChannelHandlerContext, ByteBuf, List<Object>) - Method in class com.flowpowered.network.pipeline.MessageProcessorEncoder
+
+equals(Object) - Method in class com.flowpowered.network.Codec.CodecRegistration
+
+equals(Object) - Method in interface com.flowpowered.network.Message
+
+exceptionCaught(ChannelHandlerContext, Throwable) - Method in class com.flowpowered.network.pipeline.MessageHandler
+
+
+
+
+
+
F
+
+find(int) - Method in class com.flowpowered.network.service.CodecLookupService
+
+Retrieves the
Codec from the lookup table
+
+find(Class<M>) - Method in class com.flowpowered.network.service.CodecLookupService
+
+Finds a codec by message class.
+
+find(Class<M>) - Method in class com.flowpowered.network.service.HandlerLookupService
+
+
+
+
+
+
G
+
+getAddress() - Method in class com.flowpowered.network.session.BasicSession
+
+Returns the address of this session.
+
+getChannel() - Method in class com.flowpowered.network.session.BasicSession
+
+getCodec() - Method in class com.flowpowered.network.Codec.CodecRegistration
+
+getCodecLookupService(String) - Method in class com.flowpowered.network.protocol.keyed.KeyedProtocol
+
+Gets the codec lookup service associated with this AbstractProtocol
+
+getCodecLookupService() - Method in class com.flowpowered.network.protocol.simple.SimpleProtocol
+
+Gets the codec lookup service associated with this AbstractProtocol
+
+getCodecRegistration(Class<M>) - Method in interface com.flowpowered.network.protocol.Protocol
+
+
+
+getCodecRegistration(Class<M>) - Method in class com.flowpowered.network.protocol.simple.SimpleProtocol
+
+getHandlerLookupService(String) - Method in class com.flowpowered.network.protocol.keyed.KeyedProtocol
+
+Gets the handler lookup service associated with this AbstractProtocol
+
+getHandlerLookupService() - Method in class com.flowpowered.network.protocol.simple.SimpleProtocol
+
+Gets the handler lookup service associated with this AbstractProtocol
+
+getLength() - Method in exception com.flowpowered.network.exception.UnknownPacketException
+
+getLogger() - Method in class com.flowpowered.network.pipeline.MessageHandler
+
+getLogger() - Method in class com.flowpowered.network.protocol.AbstractProtocol
+
+Returns the logger for this protocol.
+
+getLogger() - Method in class com.flowpowered.network.session.BasicSession
+
+getLogger() - Method in interface com.flowpowered.network.session.Session
+
+getMessageHandle(Class<M>) - Method in class com.flowpowered.network.protocol.AbstractProtocol
+
+getMessageHandle(Class<M>) - Method in class com.flowpowered.network.protocol.simple.SimpleProtocol
+
+getName() - Method in class com.flowpowered.network.protocol.AbstractProtocol
+
+Gets the name of the AbstractProtocol
+
+getName() - Method in interface com.flowpowered.network.protocol.Protocol
+
+getOpcode() - Method in class com.flowpowered.network.Codec.CodecRegistration
+
+getOpcode() - Method in exception com.flowpowered.network.exception.UnknownPacketException
+
+getProcessor() - Method in class com.flowpowered.network.pipeline.MessageProcessorDecoder
+
+getProcessor() - Method in class com.flowpowered.network.pipeline.MessageProcessorEncoder
+
+getProcessor() - Method in class com.flowpowered.network.session.BasicSession
+
+getProcessor() - Method in interface com.flowpowered.network.session.Session
+
+getProtocol(String) - Method in class com.flowpowered.network.protocol.ProtocolRegistry
+
+Gets the Protocol associated with a particular id
+
+getProtocol(SocketAddress) - Method in class com.flowpowered.network.protocol.ProtocolRegistry
+
+Gets the Protocol associated with a particular SocketAddress, checking by port if possible.
+
+getProtocol() - Method in class com.flowpowered.network.session.BasicSession
+
+getProtocol() - Method in interface com.flowpowered.network.session.Session
+
+Gets the protocol associated with this session.
+
+getProtocols() - Method in class com.flowpowered.network.protocol.ProtocolRegistry
+
+Returns all protocols currently registered.
+
+getSession() - Method in class com.flowpowered.network.pipeline.MessageHandler
+
+getSessionId() - Method in class com.flowpowered.network.session.BasicSession
+
+getState() - Method in class com.flowpowered.network.session.PulsingSession
+
+Gets the state of this session.
+
+getWrappedMessage(T) - Method in class com.flowpowered.network.protocol.AbstractProtocol
+
+Allows applying a wrapper to messages with dynamically allocated id's, in case this protocol needs to provide special treatment for them.
+
+
+
+
+
+
H
+
+handle(S, T) - Method in interface com.flowpowered.network.MessageHandler
+
+Handles a message that was received.
+
+handle(Message) - Method in class com.flowpowered.network.util.AnnotatedMessageHandler
+
+Handles the given message.
+
+HandlerLookupService - Class in com.flowpowered.network.service
+
+HandlerLookupService() - Constructor for class com.flowpowered.network.service.HandlerLookupService
+
+hashCode() - Method in class com.flowpowered.network.Codec.CodecRegistration
+
+hashCode() - Method in interface com.flowpowered.network.Message
+
+
+
+
+
+
I
+
+IllegalOpcodeException - Exception in com.flowpowered.network.exception
+
+IllegalOpcodeException() - Constructor for exception com.flowpowered.network.exception.IllegalOpcodeException
+
+IllegalOpcodeException(String) - Constructor for exception com.flowpowered.network.exception.IllegalOpcodeException
+
+initChannel(SocketChannel) - Method in class com.flowpowered.network.BasicChannelInitializer
+
+isActive() - Method in class com.flowpowered.network.session.BasicSession
+
+True if this session is open and connected.
+
+isAsync() - Method in interface com.flowpowered.network.AsyncableMessage
+
+This method may optionally be used to define if the message should be handled asynchronously or synchronously, when the option is available.
+
+
+
+
+
+
K
+
+KeyedProtocol - Class in com.flowpowered.network.protocol.keyed
+
+
+
+KeyedProtocol(String, int) - Constructor for class com.flowpowered.network.protocol.keyed.KeyedProtocol
+
+KeyedProtocol(String, int, Logger) - Constructor for class com.flowpowered.network.protocol.keyed.KeyedProtocol
+
+
+
+
+
+
M
+
+Message - Interface in com.flowpowered.network
+
+Implementers of this class represent the data of a message to be sent.
+
+MessageDecoder - Class in com.flowpowered.network.pipeline
+
+A
ReplayingDecoder which decodes
ByteBufs into
Messages.
+
+MessageDecoder(MessageHandler) - Constructor for class com.flowpowered.network.pipeline.MessageDecoder
+
+MessageEncoder - Class in com.flowpowered.network.pipeline
+
+A MessageToMessageEncoder which encodes into ByteBufs.
+
+MessageEncoder(MessageHandler) - Constructor for class com.flowpowered.network.pipeline.MessageEncoder
+
+MessageHandler <S extends Session ,T extends Message > - Interface in com.flowpowered.network
+
+Defines a class which handles a message of type T.
+
+MessageHandler - Class in com.flowpowered.network.pipeline
+
+A SimpleChannelUpstreamHandler which processes incoming network events.
+
+MessageHandler(ConnectionManager) - Constructor for class com.flowpowered.network.pipeline.MessageHandler
+
+Creates a new network event handler.
+
+MessageProcessor - Interface in com.flowpowered.network.processor
+
+MessageProcessor can be used in a PreprocessReplayingDecoder or ProcessingEncoder to define
+ how a ByteBuf should be processed prior to decode or after encode.
+
+MessageProcessorDecoder - Class in com.flowpowered.network.pipeline
+
+MessageProcessorDecoder(MessageHandler) - Constructor for class com.flowpowered.network.pipeline.MessageProcessorDecoder
+
+MessageProcessorEncoder - Class in com.flowpowered.network.pipeline
+
+This class provides a layer of processing after encode but before the message is passed outbound.
+
+MessageProcessorEncoder(MessageHandler) - Constructor for class com.flowpowered.network.pipeline.MessageProcessorEncoder
+
+messageReceived(Message) - Method in class com.flowpowered.network.session.BasicSession
+
+Adds a message to the unprocessed queue.
+
+messageReceived(Message) - Method in class com.flowpowered.network.session.PulsingSession
+
+Adds a message to the unprocessed queue.
+
+messageReceived(T) - Method in interface com.flowpowered.network.session.Session
+
+Passes a message to a session for processing.
+
+
+
+
+
+
N
+
+NetworkClient - Class in com.flowpowered.network
+
+This class defines an easy, general way to start a client.
+
+NetworkClient() - Constructor for class com.flowpowered.network.NetworkClient
+
+NetworkServer - Class in com.flowpowered.network
+
+This class defines an easy, general way to start a server.
+
+NetworkServer() - Constructor for class com.flowpowered.network.NetworkServer
+
+newSession(Channel) - Method in interface com.flowpowered.network.ConnectionManager
+
+Creates a new Session for a Channel.
+
+
+
+
+
+
O
+
+onBindFailure(SocketAddress, Throwable) - Method in class com.flowpowered.network.NetworkServer
+
+Called when a bind fails.
+
+onBindSuccess(SocketAddress) - Method in class com.flowpowered.network.NetworkServer
+
+Called when a bind is successfully made.
+
+onConnectFailure(SocketAddress, Throwable) - Method in class com.flowpowered.network.NetworkClient
+
+Called when a connection cannot be made.
+
+onConnectSuccess(SocketAddress) - Method in class com.flowpowered.network.NetworkClient
+
+Called when a connection has successfully been made.
+
+onDisconnect() - Method in class com.flowpowered.network.session.BasicSession
+
+onDisconnect() - Method in interface com.flowpowered.network.session.Session
+
+Called after the Session has been disconnected, right before the Session is invalidated.
+
+onHandlerThrowable(Message, MessageHandler<?, ?>, Throwable) - Method in class com.flowpowered.network.session.BasicSession
+
+Called when an exception occurs during session handling
+
+onInboundThrowable(Throwable) - Method in class com.flowpowered.network.session.BasicSession
+
+onInboundThrowable(Throwable) - Method in interface com.flowpowered.network.session.Session
+
+Called when a throwable is thrown in the pipeline during inbound operations.
+
+onOutboundThrowable(Throwable) - Method in class com.flowpowered.network.session.BasicSession
+
+onReady() - Method in class com.flowpowered.network.session.BasicSession
+
+onReady() - Method in interface com.flowpowered.network.session.Session
+
+Called once the Session is ready for messages.
+
+
+
+
+
+
P
+
+preConnectOption(ChannelOption<T>, T) - Method in class com.flowpowered.network.NetworkClient
+
+Sets an ChannelOption to apply prior to connecting.
+
+processInbound(ChannelHandlerContext, ByteBuf, ByteBuf) - Method in interface com.flowpowered.network.processor.MessageProcessor
+
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer.
+
+processInbound(ChannelHandlerContext, ByteBuf, ByteBuf) - Method in class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+processOutbound(ChannelHandlerContext, ByteBuf, ByteBuf) - Method in interface com.flowpowered.network.processor.MessageProcessor
+
+Adds the data contained in the given channel buffer to the processor and returns the output channel buffer.
+
+processOutbound(ChannelHandlerContext, ByteBuf, ByteBuf) - Method in class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+Protocol - Interface in com.flowpowered.network.protocol
+
+ProtocolRegistry <T extends Protocol > - Class in com.flowpowered.network.protocol
+
+This class provides a way to store Protocols by name and
SocketAddress.
+
+ProtocolRegistry() - Constructor for class com.flowpowered.network.protocol.ProtocolRegistry
+
+pulse() - Method in class com.flowpowered.network.session.PulsingSession
+
+PulsingSession - Class in com.flowpowered.network.session
+
+
+
+PulsingSession(Channel, AbstractProtocol) - Constructor for class com.flowpowered.network.session.PulsingSession
+
+Creates a new pulsing session.
+
+PulsingSession.SendType - Enum in com.flowpowered.network.session
+
+Specifies send behavior
+
+PulsingSession.State - Enum in com.flowpowered.network.session
+
+
+
+
+
+
R
+
+readDecode(byte[]) - Method in class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+Reads the data from the processor into the given array This method does not need to be thread safe
+
+readEncode(byte[]) - Method in class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+Reads the data from the processor into the given array This method does not need to be thread safe
+
+readHeader(ByteBuf) - Method in interface com.flowpowered.network.protocol.Protocol
+
+Read a packet header from the buffer.
+
+readUTF8(ByteBuf) - Static method in class com.flowpowered.network.util.ByteBufUtils
+
+Reads an UTF8 string from a byte buffer.
+
+readVarInt(ByteBuf) - Static method in class com.flowpowered.network.util.ByteBufUtils
+
+Reads an integer written into the byte buffer as one of various bit sizes.
+
+readVarLong(ByteBuf) - Static method in class com.flowpowered.network.util.ByteBufUtils
+
+Reads an integer written into the byte buffer as one of various bit sizes.
+
+registerMessage(String, Class<M>, Class<C>, Class<H>, Integer) - Method in class com.flowpowered.network.protocol.keyed.KeyedProtocol
+
+registerMessage(Class<M>, Class<C>, Class<H>, Integer) - Method in class com.flowpowered.network.protocol.simple.SimpleProtocol
+
+registerProtocol(int, T) - Method in class com.flowpowered.network.protocol.ProtocolRegistry
+
+Registers a Protocol under its name
+
+
+
+
+
+
S
+
+send(Message) - Method in class com.flowpowered.network.session.BasicSession
+
+send(Message) - Method in class com.flowpowered.network.session.PulsingSession
+
+send(PulsingSession.SendType, Message) - Method in class com.flowpowered.network.session.PulsingSession
+
+send(Message) - Method in interface com.flowpowered.network.session.Session
+
+Sends a message across the network.
+
+sendAll(Message...) - Method in class com.flowpowered.network.session.BasicSession
+
+sendAll(Message...) - Method in class com.flowpowered.network.session.PulsingSession
+
+sendAll(PulsingSession.SendType, Message...) - Method in class com.flowpowered.network.session.PulsingSession
+
+sendAll(Message...) - Method in interface com.flowpowered.network.session.Session
+
+Sends any amount of messages to the client.
+
+sendWithFuture(Message) - Method in class com.flowpowered.network.session.BasicSession
+
+Session - Interface in com.flowpowered.network.session
+
+Represents a connection to another engine.
+
+sessionInactivated(Session) - Method in interface com.flowpowered.network.ConnectionManager
+
+Called when a session becomes inactive because the underlying channel has been closed.
+
+setOption(ChannelOption<T>, T) - Method in class com.flowpowered.network.session.BasicSession
+
+setProtocol(AbstractProtocol) - Method in class com.flowpowered.network.session.BasicSession
+
+setState(PulsingSession.State) - Method in class com.flowpowered.network.session.PulsingSession
+
+Sets the state of this session.
+
+shutdown() - Method in interface com.flowpowered.network.ConnectionManager
+
+shutdown() - Method in class com.flowpowered.network.NetworkClient
+
+shutdown() - Method in class com.flowpowered.network.NetworkServer
+
+SimpleMessageProcessor - Class in com.flowpowered.network.processor.simple
+
+Bridge class for passing ByteBufs through byte array read/write processing.
+
+SimpleMessageProcessor(int) - Constructor for class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+SimpleProtocol - Class in com.flowpowered.network.protocol.simple
+
+
+
+SimpleProtocol(String, int) - Constructor for class com.flowpowered.network.protocol.simple.SimpleProtocol
+
+SimpleProtocol(String, int, Logger) - Constructor for class com.flowpowered.network.protocol.simple.SimpleProtocol
+
+
+
+
+
+
T
+
+toString() - Method in interface com.flowpowered.network.Message
+
+toString() - Method in class com.flowpowered.network.service.CodecLookupService
+
+toString() - Method in class com.flowpowered.network.service.HandlerLookupService
+
+toString() - Method in class com.flowpowered.network.session.BasicSession
+
+
+
+
+
+
U
+
+UnknownPacketException - Exception in com.flowpowered.network.exception
+
+Thrown when a
Codec cannot be found for a given opcode and key.
+
+UnknownPacketException(String, int, int) - Constructor for exception com.flowpowered.network.exception.UnknownPacketException
+
+
+
+
+
+
V
+
+valueOf(String) - Static method in enum com.flowpowered.network.session.PulsingSession.SendType
+
+Returns the enum constant of this type with the specified name.
+
+valueOf(String) - Static method in enum com.flowpowered.network.session.PulsingSession.State
+
+Returns the enum constant of this type with the specified name.
+
+values() - Static method in enum com.flowpowered.network.session.PulsingSession.SendType
+
+Returns an array containing the constants of this enum type, in
+the order they are declared.
+
+values() - Static method in enum com.flowpowered.network.session.PulsingSession.State
+
+Returns an array containing the constants of this enum type, in
+the order they are declared.
+
+
+
+
+
+
W
+
+writeDecode(byte[], int) - Method in class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+Writes data to the processor This method does not need to be thread safe
+
+writeEncode(byte[], int) - Method in class com.flowpowered.network.processor.simple.SimpleMessageProcessor
+
+Writes data to the processor This method does not need to be thread safe
+
+writeHeader(ByteBuf, Codec.CodecRegistration, ByteBuf) - Method in interface com.flowpowered.network.protocol.Protocol
+
+Writes a packet header to a new buffer.
+
+writeUTF8(ByteBuf, String) - Static method in class com.flowpowered.network.util.ByteBufUtils
+
+Writes an UTF8 string to a byte buffer.
+
+writeVarInt(ByteBuf, int) - Static method in class com.flowpowered.network.util.ByteBufUtils
+
+Writes an integer into the byte buffer using the least possible amount of bits.
+
+writeVarLong(ByteBuf, long) - Static method in class com.flowpowered.network.util.ByteBufUtils
+
+Writes an integer into the byte buffer using the least possible amount of bits.
+
+
+
A B C D E F G H I K M N O P R S T U V W
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..d3620a3
--- /dev/null
+++ b/index.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+Flow Network 1.0.0 API
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+Frame Alert
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to Non-frame version .
+
+
+
diff --git a/overview-frame.html b/overview-frame.html
new file mode 100644
index 0000000..5d1a5a9
--- /dev/null
+++ b/overview-frame.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+Overview List (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+
+
+
diff --git a/overview-summary.html b/overview-summary.html
new file mode 100644
index 0000000..63b2f4c
--- /dev/null
+++ b/overview-summary.html
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+Overview (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/overview-tree.html b/overview-tree.html
new file mode 100644
index 0000000..908def9
--- /dev/null
+++ b/overview-tree.html
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+Class Hierarchy (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
Class Hierarchy
+
+java.lang.Object
+
+com.flowpowered.network.protocol.AbstractProtocol (implements com.flowpowered.network.protocol.Protocol )
+
+
+com.flowpowered.network.util.AnnotatedMessageHandler
+com.flowpowered.network.session.BasicSession (implements com.flowpowered.network.session.Session )
+
+
+com.flowpowered.network.util.ByteBufUtils
+io.netty.channel.ChannelHandlerAdapter (implements io.netty.channel.ChannelHandler)
+
+io.netty.channel.ChannelInboundHandlerAdapter (implements io.netty.channel.ChannelInboundHandler)
+
+io.netty.handler.codec.ByteToMessageDecoder
+
+
+io.netty.channel.ChannelInitializer<C>
+
+
+io.netty.channel.SimpleChannelInboundHandler<I>
+
+
+
+
+io.netty.channel.ChannelOutboundHandlerAdapter (implements io.netty.channel.ChannelOutboundHandler)
+
+io.netty.handler.codec.MessageToMessageEncoder<I>
+
+
+
+
+
+
+com.flowpowered.network.Codec.CodecRegistration
+com.flowpowered.network.service.CodecLookupService
+com.flowpowered.network.service.HandlerLookupService
+com.flowpowered.network.NetworkClient (implements com.flowpowered.network.ConnectionManager )
+com.flowpowered.network.NetworkServer (implements com.flowpowered.network.ConnectionManager )
+com.flowpowered.network.protocol.ProtocolRegistry <T>
+com.flowpowered.network.processor.simple.SimpleMessageProcessor (implements com.flowpowered.network.processor.MessageProcessor )
+java.lang.Throwable (implements java.io.Serializable )
+
+
+
+
+
+
Interface Hierarchy
+
+
Annotation Type Hierarchy
+
+
Enum Hierarchy
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/package-list b/package-list
new file mode 100644
index 0000000..627df02
--- /dev/null
+++ b/package-list
@@ -0,0 +1,11 @@
+com.flowpowered.network
+com.flowpowered.network.exception
+com.flowpowered.network.pipeline
+com.flowpowered.network.processor
+com.flowpowered.network.processor.simple
+com.flowpowered.network.protocol
+com.flowpowered.network.protocol.keyed
+com.flowpowered.network.protocol.simple
+com.flowpowered.network.service
+com.flowpowered.network.session
+com.flowpowered.network.util
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index b7f7a77..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,252 +0,0 @@
-
- 4.0.0
-
-
- Flow Network
- com.flowpowered
- flow-network
- 1.0.0
- jar
- 2013
- https://flowpowered.com/network
- Network library for the Flow collection.
-
-
-
- org.sonatype.oss
- oss-parent
- 9
-
-
-
-
- UTF-8
- 0
- unknown
- unknown
- -Xdoclint:none
-
-
-
-
-
- MIT License
- https://tldrlegal.com/l/mit
- repo
-
-
-
-
-
- Flow Powered
- https://flowpowered.com
-
-
-
-
-
- DDoS
- Aleksi Sapon
- qctechs@gmail.com
-
-
- kitskub
- Jack Huey
- kitskub@gmail.com
-
-
- Wolf480pl
- Wolf480pl
- wolf480@interia.pl
-
-
- lukespragg
- Luke Spragg
- the@wulf.im
-
-
-
-
-
- scm:git:git://github.com/flow/network.git
- scm:git:ssh://git@github.com:flow/flow-network.git
- https://github.com/flow/network
-
-
-
-
- travis
- https://travis-ci.org/flow/network
-
-
-
-
- github
- https://github.com/flow/network/issues
-
-
-
-
-
-
- io.netty
- netty-all
- 4.0.33.Final
- compile
-
-
- org.slf4j
- slf4j-api
- 1.7.18
- compile
-
-
-
- junit
- junit
- 4.12
- test
-
-
- hamcrest-core
- org.hamcrest
-
-
-
-
- org.hamcrest
- hamcrest-library
- 1.3
- test
-
-
- org.powermock
- powermock-api-mockito
- 1.6.4
- test
-
-
- org.powermock
- powermock-module-junit4
- 1.6.4
- test
-
-
-
-
-
- clean install
-
-
-
-
-
- false
- .
- .
-
- LICENSE.txt
-
-
-
-
-
-
-
-
- com.mycila.maven-license-plugin
- maven-license-plugin
- 1.10.b1
-
-
-
-
- ${project.name}
- ${project.inceptionYear}
- ${project.organization.name}
- ${project.organization.url}
-
- true
- UTF-8
- true
-
-
- SLASHSTAR_STYLE
-
-
- ${project.name}
- license
-
-
- src/main/java/**
- src/test/java/**
-
-
- clean
-
- format
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.3
-
- 1.7
- 1.7
-
- -Xlint:all
- -Xlint:-path
-
- true
- true
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 2.6
-
-
-
- ${project.name}
- ${project.version}+${ciSystem}-b${buildNumber}.git-${commit}
- ${project.organization.name} - ${project.organization.url}
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 2.10.3
-
- false
- false
-
-
-
-
- org.eluder.coveralls
- coveralls-maven-plugin
- 4.1.0
-
-
-
- org.codehaus.mojo
- cobertura-maven-plugin
- 2.7
-
- xml
- 256m
-
-
-
-
-
diff --git a/script.js b/script.js
new file mode 100644
index 0000000..b346356
--- /dev/null
+++ b/script.js
@@ -0,0 +1,30 @@
+function show(type)
+{
+ count = 0;
+ for (var key in methods) {
+ var row = document.getElementById(key);
+ if ((methods[key] & type) != 0) {
+ row.style.display = '';
+ row.className = (count++ % 2) ? rowColor : altColor;
+ }
+ else
+ row.style.display = 'none';
+ }
+ updateTabs(type);
+}
+
+function updateTabs(type)
+{
+ for (var value in tabs) {
+ var sNode = document.getElementById(tabs[value][0]);
+ var spanNode = sNode.firstChild;
+ if (value == type) {
+ sNode.className = activeTableTab;
+ spanNode.innerHTML = tabs[value][1];
+ }
+ else {
+ sNode.className = tableTab;
+ spanNode.innerHTML = "" + tabs[value][1] + " ";
+ }
+ }
+}
diff --git a/serialized-form.html b/serialized-form.html
new file mode 100644
index 0000000..51731b8
--- /dev/null
+++ b/serialized-form.html
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+Serialized Form (Flow Network 1.0.0 API)
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2013–2016 Flow Powered . All rights reserved.
+
+
diff --git a/src/main/java/com/flowpowered/network/AsyncableMessage.java b/src/main/java/com/flowpowered/network/AsyncableMessage.java
deleted file mode 100644
index e989ee4..0000000
--- a/src/main/java/com/flowpowered/network/AsyncableMessage.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-public interface AsyncableMessage extends Message {
- /**
- * This method may optionally be used to define if the message should be handled asynchronously or synchronously, when the option is available.
- * It is completely up to the implementation how this is used.
- */
- public boolean isAsync();
-}
\ No newline at end of file
diff --git a/src/main/java/com/flowpowered/network/BasicChannelInitializer.java b/src/main/java/com/flowpowered/network/BasicChannelInitializer.java
deleted file mode 100644
index 7014097..0000000
--- a/src/main/java/com/flowpowered/network/BasicChannelInitializer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.socket.SocketChannel;
-
-import com.flowpowered.network.pipeline.MessageDecoder;
-import com.flowpowered.network.pipeline.MessageEncoder;
-import com.flowpowered.network.pipeline.MessageHandler;
-import com.flowpowered.network.pipeline.MessageProcessorDecoder;
-import com.flowpowered.network.pipeline.MessageProcessorEncoder;
-
-/**
- * Used to initialize the channels.
- */
-public class BasicChannelInitializer extends ChannelInitializer {
- private final ConnectionManager connectionManager;
-
- public BasicChannelInitializer(ConnectionManager connectionManager) {
- this.connectionManager = connectionManager;
- }
-
- @Override
- protected final void initChannel(SocketChannel c) {
- MessageHandler handler = new MessageHandler(connectionManager);
- MessageProcessorDecoder processorDecoder = new MessageProcessorDecoder(handler);
- MessageProcessorEncoder processorEncoder = new MessageProcessorEncoder(handler);
- MessageDecoder decoder = new MessageDecoder(handler);
- MessageEncoder encoder = new MessageEncoder(handler);
-
- c.pipeline()
- .addLast("processorDecoder", processorDecoder)
- .addLast("decoder", decoder)
- .addLast("processorEncoder", processorEncoder)
- .addLast("encoder", encoder)
- .addLast("handler", handler);
- }
-}
diff --git a/src/main/java/com/flowpowered/network/Codec.java b/src/main/java/com/flowpowered/network/Codec.java
deleted file mode 100644
index 7463602..0000000
--- a/src/main/java/com/flowpowered/network/Codec.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-import io.netty.buffer.ByteBuf;
-
-import java.io.IOException;
-
-/**
- * {@code Codec}s are used to encode and decode a {@link Message} into a {@link ByteBuf}.
- */
-public interface Codec {
- /**
- * Decodes a {@link ByteBuf} into a {@link Message}.
- *
- * @param buffer the buffer to read from
- * @return the message fully encoded.
- * @throws IOException If any decoding fails on the buffer
- */
- T decode(ByteBuf buffer) throws IOException;
-
- /**
- * Encodes a {@link Message} into a {@link ByteBuffer}.
- *
- * @param buf the buffer to encode into. Should be empty.
- * @param message The message to encode
- * @throws IOException If any data on the message fails to encode
- */
- ByteBuf encode(ByteBuf buf, T message) throws IOException;
-
- public static class CodecRegistration {
- private final int opcode;
- private final Codec> codec;
-
- public CodecRegistration(int opcode, Codec> codec) {
- this.opcode = opcode;
- this.codec = codec;
- }
-
- public int getOpcode() {
- return opcode;
- }
-
- public Codec getCodec() {
- return (Codec) codec;
- }
-
- @Override
- public int hashCode() {
- int hash = 5;
- hash = 67 * hash + this.opcode;
- return hash;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- final CodecRegistration other = (CodecRegistration) obj;
- if (this.opcode != other.opcode)
- return false;
- return true;
- }
- }
-}
diff --git a/src/main/java/com/flowpowered/network/ConnectionManager.java b/src/main/java/com/flowpowered/network/ConnectionManager.java
deleted file mode 100644
index 7c8a3b8..0000000
--- a/src/main/java/com/flowpowered/network/ConnectionManager.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-import io.netty.channel.Channel;
-
-import com.flowpowered.network.session.Session;
-
-/**
- * This class defines a basic structure for any object which manages connections.
- */
-public interface ConnectionManager {
- /**
- * Creates a new Session for a {@code Channel}. This session will be used for all API-facing actions.
- * Therefore, this session will most likely be saved by the {@code ConnectionManager} in order to interact with the
- * {@code Session}.
- *
- * @param c the Channel the Session will be using
- * @return the new Session
- */
- Session newSession(Channel c);
-
- /**
- * Called when a session becomes inactive because the underlying channel has been closed.
- * All references to the Session should be removed, as it will no longer be valid.
- *
- * @param session the Session which will become inactive
- */
- void sessionInactivated(Session session);
-
- void shutdown();
-}
diff --git a/src/main/java/com/flowpowered/network/Message.java b/src/main/java/com/flowpowered/network/Message.java
deleted file mode 100644
index d77a183..0000000
--- a/src/main/java/com/flowpowered/network/Message.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-/**
- * Implementers of this class represent the data of a message to be sent.
- * There are a few rules that messages should follow:
- *
- * All message fields should be immutable. This ensures thread-safety and makes it so Message objects can be safely stored
- * Message subclasses should override {@link #toString()}, {@link #equals(Object)} , and {@link #hashCode()}.
- * All fields in a Message should be protocol-primitive (can be written directly via ByteBuf methods or via a *single* ByteBufUtils method)
- *
- */
-public interface Message {
- @Override
- public String toString();
-
- @Override
- public boolean equals(Object other);
-
- @Override
- public int hashCode();
-}
diff --git a/src/main/java/com/flowpowered/network/MessageHandler.java b/src/main/java/com/flowpowered/network/MessageHandler.java
deleted file mode 100644
index 3f129e9..0000000
--- a/src/main/java/com/flowpowered/network/MessageHandler.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-import com.flowpowered.network.session.Session;
-
-/**
- * Defines a class which handles a message of type {@code T}.
- *
- * @param the session to cast to. THIS IS UNSAFE.
- * @param the type of message to handle
- */
-public interface MessageHandler {
- /**
- * Handles a message that was received.
- *
- * @param session the session that received the message
- * @param message the message that was received
- */
- public void handle(S session, T message);
-}
diff --git a/src/main/java/com/flowpowered/network/NetworkClient.java b/src/main/java/com/flowpowered/network/NetworkClient.java
deleted file mode 100644
index 09324da..0000000
--- a/src/main/java/com/flowpowered/network/NetworkClient.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-import java.net.SocketAddress;
-
-import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelOption;
-import io.netty.channel.EventLoopGroup;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.nio.NioSocketChannel;
-import io.netty.util.concurrent.Future;
-import io.netty.util.concurrent.GenericFutureListener;
-
-/**
- * This class defines an easy, general way to start a client. It is recommended that any clients use or extend this class.
- */
-public abstract class NetworkClient implements ConnectionManager {
- private final Bootstrap bootstrap = new Bootstrap();
- private final EventLoopGroup workerGroup = new NioEventLoopGroup();
-
- public NetworkClient() {
- bootstrap
- .group(workerGroup)
- .channel(NioSocketChannel.class)
- .handler(new BasicChannelInitializer(this));
- }
-
- public ChannelFuture connect(final SocketAddress address) {
- return bootstrap.connect(address).addListener(new GenericFutureListener>() {
- @Override
- public void operationComplete(Future super Void> f) throws Exception {
- if (f.isSuccess()) {
- onConnectSuccess(address);
- } else {
- onConnectFailure(address, f.cause());
- }
- }
- });
- }
-
- /**
- * Sets an {@link ChannelOption} to apply prior to connecting. After a connection has been established, this method is useless; an Exception *may* be thrown on it's use.
- * @param
- * @param option
- * @param value
- */
- public void preConnectOption(ChannelOption option, T value) {
- bootstrap.option(option, value);
- }
-
- /**
- * Called when a connection has successfully been made.
- * @param address The address we succesfully connected to.
- */
- public void onConnectSuccess(SocketAddress address) {
- }
-
- /**
- * Called when a connection cannot be made.
- * @param address The address that we attempted to connect to.
- * @param t The cause of why the connection couldn't be made. This can be null.
- */
- public void onConnectFailure(SocketAddress address, Throwable t) {
- }
-
- @Override
- public void shutdown() {
- workerGroup.shutdownGracefully();
- }
-}
diff --git a/src/main/java/com/flowpowered/network/NetworkServer.java b/src/main/java/com/flowpowered/network/NetworkServer.java
deleted file mode 100644
index cfe726a..0000000
--- a/src/main/java/com/flowpowered/network/NetworkServer.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network;
-
-import io.netty.bootstrap.ServerBootstrap;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelOption;
-import io.netty.channel.EventLoopGroup;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.nio.NioServerSocketChannel;
-import io.netty.util.concurrent.Future;
-import io.netty.util.concurrent.GenericFutureListener;
-
-import java.net.SocketAddress;
-
-/**
- * This class defines an easy, general way to start a server. It is recommended that any server use or extend this class.
- */
-public abstract class NetworkServer implements ConnectionManager {
- /**
- * The {@link ServerBootstrap} used to initialize Netty.
- */
- private final ServerBootstrap bootstrap = new ServerBootstrap();
- private final EventLoopGroup bossGroup = new NioEventLoopGroup();
- private final EventLoopGroup workerGroup = new NioEventLoopGroup();
-
- public NetworkServer() {
- bootstrap
- .group(bossGroup, workerGroup)
- .channel(NioServerSocketChannel.class)
- .childHandler(new BasicChannelInitializer(this))
- .childOption(ChannelOption.TCP_NODELAY, true)
- .childOption(ChannelOption.SO_KEEPALIVE, true);
- }
-
- public ChannelFuture bind(final SocketAddress address) {
- return bootstrap.bind(address).addListener(new GenericFutureListener>() {
- @Override
- public void operationComplete(Future super Void> f) throws Exception {
- if (f.isSuccess()) {
- onBindSuccess(address);
- } else {
- onBindFailure(address, f.cause());
- }
- }
- });
- }
-
- /**
- * Called when a bind is successfully made.
- * @param address The address we are now bound too.
- */
- public void onBindSuccess(SocketAddress address) {
- }
-
- /**
- * Called when a bind fails.
- * @param address The address we attempted to bind too.
- * @param t The cause of why the binding failed. This can be null.
- */
- public void onBindFailure(SocketAddress address, Throwable t) {
- }
-
- @Override
- public void shutdown() {
- workerGroup.shutdownGracefully();
- bossGroup.shutdownGracefully();
- }
-}
diff --git a/src/main/java/com/flowpowered/network/exception/ChannelClosedException.java b/src/main/java/com/flowpowered/network/exception/ChannelClosedException.java
deleted file mode 100644
index 5396b98..0000000
--- a/src/main/java/com/flowpowered/network/exception/ChannelClosedException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.exception;
-
-public class ChannelClosedException extends RuntimeException {
- private static final long serialVersionUID = 1L;
-
- public ChannelClosedException() {
- }
-
- public ChannelClosedException(String message) {
- super(message);
- }
-
-}
diff --git a/src/main/java/com/flowpowered/network/exception/IllegalOpcodeException.java b/src/main/java/com/flowpowered/network/exception/IllegalOpcodeException.java
deleted file mode 100644
index 93dab94..0000000
--- a/src/main/java/com/flowpowered/network/exception/IllegalOpcodeException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.exception;
-
-public class IllegalOpcodeException extends Exception {
-
- public IllegalOpcodeException() {
- }
-
- public IllegalOpcodeException(String message) {
- super(message);
- }
-
-}
diff --git a/src/main/java/com/flowpowered/network/exception/UnknownPacketException.java b/src/main/java/com/flowpowered/network/exception/UnknownPacketException.java
deleted file mode 100644
index 4fad879..0000000
--- a/src/main/java/com/flowpowered/network/exception/UnknownPacketException.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.exception;
-
-/**
- * Thrown when a {@link com.flowpowered.network.Codec} cannot be found for a given opcode and key.
- */
-public class UnknownPacketException extends Exception {
- private static final long serialVersionUID = 2479966238464122702L;
- private final int opcode;
- /**
- * If the length is -1, the length is unknown.
- */
- private final int length;
-
- /**
- * @param opcode the opcode of the unknown packet
- */
- public UnknownPacketException(String message, int opcode, int length) {
- super(message);
- this.opcode = opcode;
- this.length = length;
- }
-
- public int getOpcode() {
- return opcode;
- }
-
- public int getLength() {
- return length;
- }
-}
diff --git a/src/main/java/com/flowpowered/network/pipeline/MessageDecoder.java b/src/main/java/com/flowpowered/network/pipeline/MessageDecoder.java
deleted file mode 100644
index b3b79db..0000000
--- a/src/main/java/com/flowpowered/network/pipeline/MessageDecoder.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.pipeline;
-
-import java.util.List;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.ReplayingDecoder;
-
-import com.flowpowered.network.Codec;
-import com.flowpowered.network.Message;
-import com.flowpowered.network.exception.UnknownPacketException;
-import com.flowpowered.network.protocol.Protocol;
-
-/**
- * A {@link ReplayingDecoder} which decodes {@link ByteBuf}s into {@link Message}s.
- */
-public class MessageDecoder extends ReplayingDecoder {
- private final MessageHandler messageHandler;
-
- public MessageDecoder(final MessageHandler handler) {
- this.messageHandler = handler;
- }
-
- @Override
- protected void decode(ChannelHandlerContext ctx, ByteBuf buf, List out) throws Exception {
- Protocol protocol = messageHandler.getSession().getProtocol();
- Codec> codec = null;
- try {
- codec = protocol.readHeader(buf);
- } catch (UnknownPacketException e) {
- // We want to catch this and read the length if possible
- int length = e.getLength();
- if (length != -1 && length != 0) {
- buf.readBytes(length);
- }
- throw e;
- }
-
- if (codec == null) {
- throw new UnsupportedOperationException("Protocol#readHeader cannot return null!");
- }
- Message decoded = codec.decode(buf);
- out.add(decoded);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/flowpowered/network/pipeline/MessageEncoder.java b/src/main/java/com/flowpowered/network/pipeline/MessageEncoder.java
deleted file mode 100644
index 2c01349..0000000
--- a/src/main/java/com/flowpowered/network/pipeline/MessageEncoder.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.pipeline;
-
-import java.io.IOException;
-import java.util.List;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.MessageToMessageEncoder;
-
-import com.flowpowered.network.Codec.CodecRegistration;
-import com.flowpowered.network.Message;
-import com.flowpowered.network.protocol.Protocol;
-
-/**
- * A {@link MessageToMessageEncoder} which encodes into {@link ByteBuf}s.
- */
-public class MessageEncoder extends MessageToMessageEncoder {
- private final MessageHandler messageHandler;
-
- public MessageEncoder(final MessageHandler messageHandler) {
- this.messageHandler = messageHandler;
- }
-
- @Override
- protected void encode(ChannelHandlerContext ctx, Message message, List out) throws Exception {
- final Protocol protocol = messageHandler.getSession().getProtocol();
- final Class extends Message> clazz = message.getClass();
- CodecRegistration reg = protocol.getCodecRegistration(message.getClass());
- if (reg == null) {
- throw new Exception("Unknown message type: " + clazz + ".");
- }
- ByteBuf messageBuf = ctx.alloc().buffer();
- messageBuf = reg.getCodec().encode(messageBuf, message);
-
- ByteBuf headerBuf = ctx.alloc().buffer();
- headerBuf = protocol.writeHeader(headerBuf, reg, messageBuf);
- out.add(Unpooled.wrappedBuffer(headerBuf, messageBuf));
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/flowpowered/network/pipeline/MessageHandler.java b/src/main/java/com/flowpowered/network/pipeline/MessageHandler.java
deleted file mode 100644
index c859d7e..0000000
--- a/src/main/java/com/flowpowered/network/pipeline/MessageHandler.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.pipeline;
-
-import java.util.concurrent.atomic.AtomicReference;
-
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.SimpleChannelInboundHandler;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.flowpowered.network.ConnectionManager;
-import com.flowpowered.network.Message;
-import com.flowpowered.network.session.Session;
-
-/**
- * A {@link SimpleChannelUpstreamHandler} which processes incoming network events.
- */
-public class MessageHandler extends SimpleChannelInboundHandler {
- /**
- * The associated session
- */
- private final AtomicReference session = new AtomicReference<>(null);
- private final ConnectionManager connectionManager;
-
- /**
- * Creates a new network event handler.
- */
- public MessageHandler(ConnectionManager connectionManager) {
- this.connectionManager = connectionManager;
- }
-
- @Override
- public void channelActive(ChannelHandlerContext ctx) {
- final Channel c = ctx.channel();
- Session s = connectionManager.newSession(c);
- if (!this.session.compareAndSet(null, s)) {
- throw new IllegalStateException("Session may not be set more than once");
- }
- s.onReady();
- }
-
- @Override
- public void channelInactive(ChannelHandlerContext ctx) {
- Session session = this.session.get();
- session.onDisconnect();
- connectionManager.sessionInactivated(session);
- }
-
- @Override
- protected void channelRead0(ChannelHandlerContext ctx, Message i) {
- session.get().messageReceived(i);
- }
-
- @Override
- public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
- session.get().onInboundThrowable(cause);
- }
-
- public Session getSession() {
- return session.get();
- }
-
- protected Logger getLogger() {
- String loggerName = "";
- if (session.get() != null) {
- Logger protocolLogger = session.get().getLogger();
- // TODO: Maybe we should just use the protocolLogger if present?
- loggerName = protocolLogger != null ? protocolLogger.getName() + "." : "";
- }
- return LoggerFactory.getLogger(loggerName + getClass().getSimpleName());
- }
-}
diff --git a/src/main/java/com/flowpowered/network/pipeline/MessageProcessorDecoder.java b/src/main/java/com/flowpowered/network/pipeline/MessageProcessorDecoder.java
deleted file mode 100644
index acc4930..0000000
--- a/src/main/java/com/flowpowered/network/pipeline/MessageProcessorDecoder.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.pipeline;
-
-import java.util.List;
-
-import com.flowpowered.network.processor.MessageProcessor;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.ByteToMessageDecoder;
-
-public class MessageProcessorDecoder extends ByteToMessageDecoder {
- private final MessageHandler messageHandler;
-
- public MessageProcessorDecoder(final MessageHandler messageHandler) {
- this.messageHandler = messageHandler;
- }
-
- @Override
- protected void decode(ChannelHandlerContext ctx, ByteBuf buf, List frames) throws Exception {
- MessageProcessor processor = getProcessor();
- if (processor == null) {
- frames.add(buf.readBytes(buf.readableBytes()));
- return;
- }
- // Eventually, we will run out of bytes and a ReplayableError will be called
- ByteBuf liveBuffer = ctx.alloc().buffer();
- liveBuffer = processor.processInbound(ctx, buf, liveBuffer);
- frames.add(liveBuffer);
- }
-
- protected MessageProcessor getProcessor() {
- return messageHandler.getSession().getProcessor();
- }
-}
diff --git a/src/main/java/com/flowpowered/network/pipeline/MessageProcessorEncoder.java b/src/main/java/com/flowpowered/network/pipeline/MessageProcessorEncoder.java
deleted file mode 100644
index 1041996..0000000
--- a/src/main/java/com/flowpowered/network/pipeline/MessageProcessorEncoder.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.pipeline;
-
-import java.util.List;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.MessageToMessageEncoder;
-
-import com.flowpowered.network.processor.MessageProcessor;
-
-/**
- * This class provides a layer of processing after encode but before the message is passed outbound.
- */
-public class MessageProcessorEncoder extends MessageToMessageEncoder {
- private final MessageHandler messageHandler;
-
- public MessageProcessorEncoder(final MessageHandler messageHandler) {
- this.messageHandler = messageHandler;
- }
-
- @Override
- protected void encode(ChannelHandlerContext ctx, final ByteBuf buf, List out) throws Exception {
- final MessageProcessor processor = getProcessor();
- if (processor == null) {
- out.add(buf.readBytes(buf.readableBytes()));
- return;
- }
- ByteBuf toAdd = ctx.alloc().buffer();
- toAdd = processor.processOutbound(ctx, buf, toAdd);
- out.add(toAdd);
- }
-
- protected MessageProcessor getProcessor() {
- return messageHandler.getSession().getProcessor();
- }
-}
diff --git a/src/main/java/com/flowpowered/network/processor/MessageProcessor.java b/src/main/java/com/flowpowered/network/processor/MessageProcessor.java
deleted file mode 100644
index dbc128f..0000000
--- a/src/main/java/com/flowpowered/network/processor/MessageProcessor.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.processor;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-
-/**
- * {@code MessageProcessor} can be used in a {@link PreprocessReplayingDecoder} or {@link ProcessingEncoder} to define
- * how a {@code ByteBuf} should be processed prior to decode or after encode.
- */
-public interface MessageProcessor {
- /**
- * Adds the data contained in the given channel buffer to the processor and returns the output channel buffer. The method may be called from multiple threads.
- * This is called after {@code Codec.encode}, but before the message is sent.
- * {@code input.release} should NOT be called; it is done externally.
- * {@code buffer.release} should NOT be called; it is done externally.
- *
- * @param ctx the channel handler context
- * @param input the buffer containing the input data
- * @param buffer the buffer to add the data to; will be dynamically-sized
- * @return the processed outbound ByteBuf
- */
- public ByteBuf processOutbound(ChannelHandlerContext ctx, ByteBuf input, ByteBuf buffer);
-
- /**
- * Adds the data contained in the given channel buffer to the processor and returns the output channel buffer. The method may be called from multiple threads.
- * This should read as much data from {@code input} as possible. It does not replay.
- * This is called after the message arrives, but before {@code Codec.decode} is called.
- * {@code input.release} should NOT be called; it is done externally.
- * {@code buffer.release} should NOT be called; it is done externally.
- *
- * @param ctx the channel handler context
- * @param input the buffer containing the input data
- * @param buffer the buffer to add the data to; will be dynamically-sized
- * @return the processed inbound buffer
- */
- public ByteBuf processInbound(ChannelHandlerContext ctx, ByteBuf input, ByteBuf buffer);
-}
diff --git a/src/main/java/com/flowpowered/network/processor/simple/SimpleMessageProcessor.java b/src/main/java/com/flowpowered/network/processor/simple/SimpleMessageProcessor.java
deleted file mode 100644
index 64950fd..0000000
--- a/src/main/java/com/flowpowered/network/processor/simple/SimpleMessageProcessor.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.processor.simple;
-
-import com.flowpowered.network.processor.MessageProcessor;
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-
-/**
- * Bridge class for passing ByteBufs through byte array read/write processing. This is only only one {@link DividedMessageProcessorPart} and must use a {@link DividedMessageProcessor}
- */
-public abstract class SimpleMessageProcessor implements MessageProcessor {
- protected final int capacity;
- private final byte[] decodingByteBuffer;
- private final byte[] encodingByteBuffer;
-
- public SimpleMessageProcessor(int capacity) {
- this.capacity = capacity;
- this.decodingByteBuffer = new byte[capacity];
- this.encodingByteBuffer = new byte[capacity];
- }
-
- @Override
- public final synchronized ByteBuf processOutbound(ChannelHandlerContext ctx, final ByteBuf input, ByteBuf buffer) {
- int remaining;
- while ((remaining = input.readableBytes()) > 0) {
- int clamped = Math.min(remaining, capacity);
- input.readBytes(encodingByteBuffer, 0, clamped);
- writeEncode(encodingByteBuffer, clamped);
- int read;
- while ((read = readEncode(encodingByteBuffer)) > 0) {
- buffer.writeBytes(encodingByteBuffer, 0, read);
- }
- }
- return buffer;
- }
-
- /**
- * Writes data to the processor This method does not need to be thread safe
- *
- * @param buf a buffer containing the data
- * @param length the length of the data to process
- */
- protected abstract void writeEncode(byte[] buf, int length);
-
- /**
- * Reads the data from the processor into the given array This method does not need to be thread safe
- *
- * @param buf the byte array to process the data to
- * @return the number of bytes written
- */
- protected abstract int readEncode(byte[] buf);
-
- @Override
- public final synchronized ByteBuf processInbound(ChannelHandlerContext ctx, final ByteBuf input, ByteBuf buffer) {
- int remaining;
- while ((remaining = input.readableBytes()) > 0) {
- int clamped = Math.min(remaining, capacity);
- input.readBytes(decodingByteBuffer, 0, clamped);
- writeDecode(decodingByteBuffer, clamped);
- int read;
- while ((read = readDecode(decodingByteBuffer)) > 0) {
- buffer.writeBytes(decodingByteBuffer, 0, read);
- }
- }
- return buffer;
- }
-
- /**
- * Writes data to the processor This method does not need to be thread safe
- *
- * @param buf a buffer containing the data
- * @param length the length of the data to process
- */
- protected abstract void writeDecode(byte[] buf, int length);
-
- /**
- * Reads the data from the processor into the given array This method does not need to be thread safe
- *
- * @param buf the byte array to process the data to
- * @return the number of bytes written
- */
- protected abstract int readDecode(byte[] buf);
-}
diff --git a/src/main/java/com/flowpowered/network/protocol/AbstractProtocol.java b/src/main/java/com/flowpowered/network/protocol/AbstractProtocol.java
deleted file mode 100644
index 412c7b7..0000000
--- a/src/main/java/com/flowpowered/network/protocol/AbstractProtocol.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.protocol;
-
-import java.io.IOException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.flowpowered.network.Message;
-import com.flowpowered.network.MessageHandler;
-
-/**
- * A {@code AbstractProtocol} stores to what port the protocol should be bound to.
- */
-public abstract class AbstractProtocol implements Protocol {
- private final String name;
- private final Logger logger;
-
- public AbstractProtocol(String name) {
- this(name, LoggerFactory.getLogger("Protocol." + name));
- }
-
- /**
- * @param name
- * @param maxPackets
- * @param logger
- */
- public AbstractProtocol(String name, Logger logger) {
- this.name = name;
- this.logger = logger;
- }
-
- /**
- * Gets the name of the AbstractProtocol
- *
- * @return the name
- */
- @Override
- public String getName() {
- return name;
- }
-
- /**
- * Returns the logger for this protocol.
- *
- * @return the logger
- */
- public Logger getLogger() {
- return logger;
- }
-
- /**
- * Allows applying a wrapper to messages with dynamically allocated id's, in case this protocol needs to provide special treatment for them.
- *
- * @param dynamicMessage The message with a dynamically-allocated codec
- * @return The new message
- */
- public Message getWrappedMessage(T dynamicMessage) throws IOException {
- return dynamicMessage;
- }
-
- public abstract MessageHandler, M> getMessageHandle(Class message);
-}
\ No newline at end of file
diff --git a/src/main/java/com/flowpowered/network/protocol/Protocol.java b/src/main/java/com/flowpowered/network/protocol/Protocol.java
deleted file mode 100644
index 28c2925..0000000
--- a/src/main/java/com/flowpowered/network/protocol/Protocol.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.protocol;
-
-import com.flowpowered.network.Codec;
-import com.flowpowered.network.Codec.CodecRegistration;
-import com.flowpowered.network.Message;
-import com.flowpowered.network.exception.UnknownPacketException;
-
-import io.netty.buffer.ByteBuf;
-
-public interface Protocol {
-
- /**
- * @return the name of this Protocol
- */
- String getName();
-
- /**
- * Read a packet header from the buffer. If a codec is not known, throw a {@link UnknownPacketException}
- *
- * @param buf The buffer to read from
- * @return The correct codec; null will throw an UnsupportedOperationException
- * @throws UnknownPacketException when the opcode does not have an associated codec
- */
- Codec> readHeader(ByteBuf buf) throws UnknownPacketException;
-
- /**
- * Gets the {@link Codec} associated with encoding this {@link Message}.
- *
- * @param the message type
- * @param message the message
- * @return the codec to encode with
- */
- CodecRegistration getCodecRegistration(Class message);
-
- /**
- * Writes a packet header to a new buffer.
- *
- * @param header the buffer which to write the header to
- * @param codec The codec the message was written with
- * @param data The data from the encoded message
- * @return the header ByteBuf to use
- */
- ByteBuf writeHeader(ByteBuf header, CodecRegistration codec, ByteBuf data);
-}
\ No newline at end of file
diff --git a/src/main/java/com/flowpowered/network/protocol/ProtocolRegistry.java b/src/main/java/com/flowpowered/network/protocol/ProtocolRegistry.java
deleted file mode 100644
index 763ba7f..0000000
--- a/src/main/java/com/flowpowered/network/protocol/ProtocolRegistry.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.protocol;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * This class provides a way to store Protocols by name and {@link SocketAddress}.
- *
- */
-public class ProtocolRegistry {
- private final ConcurrentHashMap names = new ConcurrentHashMap<>();
- private final ConcurrentHashMap sockets = new ConcurrentHashMap<>();
-
- /**
- * Registers a Protocol under its name
- *
- * @param protocol the Protocol
- */
- public void registerProtocol(int port, T protocol) {
- this.names.put(protocol.getName(), protocol);
- this.sockets.put(port, protocol);
- }
-
- /**
- * Gets the Protocol associated with a particular id
- *
- * @param name the id
- * @return the Protocol
- */
- public T getProtocol(String name) {
- return this.names.get(name);
- }
-
- /**
- * Gets the Protocol associated with a particular {@code SocketAddress}, checking by port if possible.
- *
- * @param address the address
- * @return the Protocol
- */
- public T getProtocol(SocketAddress address) {
- if (address instanceof InetSocketAddress) {
- return this.sockets.get(((InetSocketAddress) address).getPort());
- }
- return null;
- }
-
- /**
- * Returns all protocols currently registered. The returned collection is unmodifiable.
- *
- * @return All registered protocols
- */
- public Collection getProtocols() {
- return Collections.unmodifiableCollection(this.names.values());
- }
-
-}
diff --git a/src/main/java/com/flowpowered/network/protocol/keyed/KeyedProtocol.java b/src/main/java/com/flowpowered/network/protocol/keyed/KeyedProtocol.java
deleted file mode 100644
index 2303022..0000000
--- a/src/main/java/com/flowpowered/network/protocol/keyed/KeyedProtocol.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.protocol.keyed;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import com.flowpowered.network.Codec;
-import com.flowpowered.network.Codec.CodecRegistration;
-import com.flowpowered.network.Message;
-import com.flowpowered.network.MessageHandler;
-import com.flowpowered.network.protocol.AbstractProtocol;
-import com.flowpowered.network.service.CodecLookupService;
-import com.flowpowered.network.service.HandlerLookupService;
-
-import org.slf4j.Logger;
-
-/**
- * A {@code AbstractProtocol} stores {@link Message}s and their respective {@link Codec}s and {@link MessageHandler}s by key.
- */
-public abstract class KeyedProtocol extends AbstractProtocol {
- private final int maxPackets;
- private final ConcurrentMap codecLookup;
- private final ConcurrentMap handlerLookup;
-
- /**
- * @param name
- * @param maxPackets {@see CodecLookupService}
- */
- public KeyedProtocol(String name, int maxPackets) {
- super(name);
- this.maxPackets = maxPackets;
- codecLookup = new ConcurrentHashMap<>();
- handlerLookup = new ConcurrentHashMap<>();
- }
-
- /**
- * @param name
- * @param maxPackets {@see CodecLookupService}
- * @param logger
- */
- public KeyedProtocol(String name, int maxPackets, Logger logger) {
- super(name, logger);
- this.maxPackets = maxPackets;
- codecLookup = new ConcurrentHashMap<>();
- handlerLookup = new ConcurrentHashMap<>();
- }
-
- /**
- * Gets the handler lookup service associated with this AbstractProtocol
- *
- * @return the handler lookup service, or null if none
- */
- protected HandlerLookupService getHandlerLookupService(String key) {
- return handlerLookup.get(key);
- }
-
- /**
- * Gets the codec lookup service associated with this AbstractProtocol
- *
- * @return the codec lookup service, or null if none
- */
- protected CodecLookupService getCodecLookupService(String key) {
- return codecLookup.get(key);
- }
-
- public , H extends MessageHandler, ? super M>> CodecRegistration registerMessage(String key, Class message, Class codec, Class handler, Integer opcode) {
- try {
- CodecLookupService codecLookup = this.codecLookup.get(key);
- if (codecLookup == null) {
- codecLookup = new CodecLookupService(maxPackets);
- this.codecLookup.put(key, codecLookup);
- }
- HandlerLookupService handlerLookup = this.handlerLookup.get(key);
- if (handlerLookup == null) {
- handlerLookup = new HandlerLookupService();
- this.handlerLookup.put(key, handlerLookup);
- }
- CodecRegistration bind = codecLookup.bind(message, codec, opcode);
- if (bind != null && handler != null) {
- handlerLookup.bind(message, handler);
- }
- return bind;
- } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
- getLogger().error("Error registering codec " + codec + ": ", e); // TODO: Use parametrized message instead of string concatation.
- return null;
- }
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/flowpowered/network/protocol/simple/SimpleProtocol.java b/src/main/java/com/flowpowered/network/protocol/simple/SimpleProtocol.java
deleted file mode 100644
index 9583a5c..0000000
--- a/src/main/java/com/flowpowered/network/protocol/simple/SimpleProtocol.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.protocol.simple;
-
-import java.lang.reflect.InvocationTargetException;
-
-import com.flowpowered.network.Codec;
-import com.flowpowered.network.Codec.CodecRegistration;
-import com.flowpowered.network.Message;
-import com.flowpowered.network.MessageHandler;
-import com.flowpowered.network.protocol.AbstractProtocol;
-import com.flowpowered.network.service.CodecLookupService;
-import com.flowpowered.network.service.HandlerLookupService;
-
-import org.slf4j.Logger;
-
-/**
- * A {@code AbstractProtocol} stores {@link Message}s and their respective {@link Codec}s and {@link MessageHandler}s.
- */
-public abstract class SimpleProtocol extends AbstractProtocol {
- private final CodecLookupService codecLookup;
- private final HandlerLookupService handlerLookup;
-
- /**
- * @param name
- * @param maxPackets {@see CodecLookupService}
- */
- public SimpleProtocol(String name, int maxPackets) {
- super(name);
- codecLookup = new CodecLookupService(maxPackets);
- handlerLookup = new HandlerLookupService();
- }
-
- /**
- * @param name
- * @param maxPackets {@see CodecLookupService}
- * @param logger
- */
- public SimpleProtocol(String name, int maxPackets, Logger logger) {
- super(name, logger);
- codecLookup = new CodecLookupService(maxPackets);
- handlerLookup = new HandlerLookupService();
- }
-
- /**
- * Gets the handler lookup service associated with this AbstractProtocol
- *
- * @return the handler lookup service
- */
- protected HandlerLookupService getHandlerLookupService() {
- return handlerLookup;
- }
-
- /**
- * Gets the codec lookup service associated with this AbstractProtocol
- *
- * @return the codec lookup service
- */
- protected CodecLookupService getCodecLookupService() {
- return codecLookup;
- }
-
- @Override
- public CodecRegistration getCodecRegistration(Class message) {
- return codecLookup.find(message);
- }
-
- @Override
- public MessageHandler, M> getMessageHandle(Class message) {
- return handlerLookup.find(message);
- }
-
- public , H extends MessageHandler, ? super M>> CodecRegistration registerMessage(Class message, Class codec, Class handler, Integer opcode) {
- try {
- CodecRegistration bind = codecLookup.bind(message, codec, opcode);
- if (bind != null && handler != null) {
- handlerLookup.bind(message, handler);
- }
- return bind;
- } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
- getLogger().error("Error registering codec " + codec + ": ", e); // TODO: Use parametrized message instead of string concatation.
- return null;
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/flowpowered/network/service/CodecLookupService.java b/src/main/java/com/flowpowered/network/service/CodecLookupService.java
deleted file mode 100644
index 949ec21..0000000
--- a/src/main/java/com/flowpowered/network/service/CodecLookupService.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.service;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import com.flowpowered.network.Codec;
-import com.flowpowered.network.Codec.CodecRegistration;
-import com.flowpowered.network.Message;
-import com.flowpowered.network.exception.IllegalOpcodeException;
-
-/**
- * A class used to lookup message codecs.
- */
-public class CodecLookupService {
- /**
- * A lookup table for the Message classes mapped to their Codec.
- */
- private final ConcurrentMap, CodecRegistration> messages;
- /**
- * Lookup table for opcodes mapped to their codecs.
- */
- private final ConcurrentMap opcodes;
- private final Codec[] opcodeTable;
- /**
- * Stores the next opcode available.
- */
- private final AtomicInteger nextId;
-
- /**
- * The {@link CodecLookupService} stores the codecs available in the protocol. Codecs can be found using either the class of the message they represent or their message's opcode.
- * If the provided size is 0 then a map for the opcode->Codec mapping; otherwise, an array will be used.
- *
- * @param size 0 for map, otherwise the array size
- */
- public CodecLookupService(int size) {
- if (size < 0) {
- throw new IllegalArgumentException("Size cannot be less than 0!");
- }
- messages = new ConcurrentHashMap<>();
- if (size == 0) {
- opcodes = new ConcurrentHashMap<>();
- opcodeTable = null;
- } else {
- opcodeTable = new Codec[size];
- opcodes = null;
- }
- nextId = new AtomicInteger(0);
- }
-
- /**
- * Binds a codec by adding entries for it to the tables. TODO: if a dynamic opcode is registered then a static opcode tries to register, reassign dynamic. TODO: if a static opcode is registered then
- * a static opcode tries to register, throw exception
- *
- * @param messageClazz The message's class
- * @param codecClazz The codec's class.
- * @param opcode the opcode to register with, or null if the codec should be dynamic
- * @param The type of message
- * @param The type of codec.
- * @return the registration object of the codec
- * @throws InstantiationException if the codec could not be instantiated.
- * @throws IllegalAccessException if the codec could not be instantiated due to an access violation.
- */
- @SuppressWarnings("unchecked")
- public > CodecRegistration bind(Class messageClazz, Class codecClazz, Integer opcode) throws InstantiationException, IllegalAccessException, InvocationTargetException {
- CodecRegistration reg = messages.get(messageClazz);
- if (reg != null) {
- return reg;
- }
- C codec;
- try {
- Constructor con = codecClazz.getConstructor();
- con.setAccessible(true);
- codec = con.newInstance();
- } catch(NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
- throw new IllegalArgumentException("Codec could not be created!", e);
- }
- if (opcode != null) {
- if (opcode < 0) {
- throw new IllegalArgumentException("Opcode must either be null or greater than or equal to 0!");
- }
- } else {
- int id;
- try {
- do {
- id = nextId.getAndIncrement();
- } while (get(id) != null);
- } catch (IndexOutOfBoundsException ioobe) {
- throw new IllegalStateException("Ran out of Ids!", ioobe);
- }
- opcode = id;
- }
- Codec> previous = get(opcode);
- if (previous != null && previous.getClass() != codecClazz) {
- throw new IllegalStateException("Trying to bind an opcode where one already exists. New: " + codecClazz.getSimpleName() + " Old: " + previous.getClass().getSimpleName());
- }
- put(opcode, codec);
- reg = new CodecRegistration(opcode, codec);
- messages.put(messageClazz, reg);
- return reg;
- }
-
- private Codec> get(int opcode) throws ArrayIndexOutOfBoundsException {
- if (opcodeTable != null && opcodes == null) {
- return opcodeTable[opcode];
- } else if (opcodes != null && opcodeTable == null) {
- return opcodes.get(opcode);
- } else {
- throw new IllegalStateException("One and only one codec storage system must be in use!");
- }
- }
-
- private void put(int opcode, Codec> codec) {
- if (opcodeTable != null && opcodes == null) {
- opcodeTable[opcode] = codec;
- } else if (opcodes != null && opcodeTable == null) {
- opcodes.put(opcode, codec);
- } else {
- throw new IllegalStateException("One and only one codec storage system must be in use!");
- }
- }
-
- /**
- * Retrieves the {@link Codec} from the lookup table
- *
- * @param opcode The opcode which the codec uses
- * @return The codec
- * @throws IllegalOpcodeException if the opcode is not bound
- */
- public Codec> find(int opcode) throws IllegalOpcodeException {
- try {
- Codec> c = get(opcode);
- if (c == null) {
- throw new NullPointerException();
- }
- return c;
- } catch (ArrayIndexOutOfBoundsException | NullPointerException e) {
- throw new IllegalOpcodeException("Opcode " + opcode + " is not bound!");
- }
- }
-
- /**
- * Finds a codec by message class.
- *
- * @param clazz The message class.
- * @param The type of message.
- * @return The codec, or {@code null} if it could not be found.
- */
- @SuppressWarnings("unchecked")
- public CodecRegistration find(Class clazz) {
- return messages.get(clazz);
- }
-
- @Override
- public String toString() {
- return "CodecLookupService{" + "messages=" + messages + ", opcodes=" + opcodes + '}';
- }
-}
diff --git a/src/main/java/com/flowpowered/network/service/HandlerLookupService.java b/src/main/java/com/flowpowered/network/service/HandlerLookupService.java
deleted file mode 100644
index 2e91ec9..0000000
--- a/src/main/java/com/flowpowered/network/service/HandlerLookupService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.service;
-
-import com.flowpowered.network.MessageHandler;
-import com.flowpowered.network.Message;
-import java.util.HashMap;
-import java.util.Map;
-
-public class HandlerLookupService {
- private final Map, MessageHandler, ?>> handlers = new HashMap<>();
-
- public > void bind(Class clazz, Class handlerClass) throws InstantiationException, IllegalAccessException {
- MessageHandler, ? super M> handler = handlerClass.newInstance();
- handlers.put(clazz, handler);
- }
-
- @SuppressWarnings("unchecked")
- public MessageHandler, M> find(Class clazz) {
- return (MessageHandler, M>) handlers.get(clazz);
- }
-
- @Override
- public String toString() {
- return "HandlerLookupService{" + "handlers=" + handlers + '}';
- }
-}
diff --git a/src/main/java/com/flowpowered/network/session/BasicSession.java b/src/main/java/com/flowpowered/network/session/BasicSession.java
deleted file mode 100644
index 79e5ccb..0000000
--- a/src/main/java/com/flowpowered/network/session/BasicSession.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.session;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.Random;
-
-import com.flowpowered.network.Message;
-import com.flowpowered.network.MessageHandler;
-import com.flowpowered.network.exception.ChannelClosedException;
-import com.flowpowered.network.processor.MessageProcessor;
-import com.flowpowered.network.protocol.AbstractProtocol;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelOption;
-import io.netty.util.concurrent.Future;
-import io.netty.util.concurrent.GenericFutureListener;
-import org.slf4j.Logger;
-
-/**
- * A basic implementation of a {@link Session} which handles and sends messages instantly.
- */
-public class BasicSession implements Session {
- /**
- * The Random used for sessionIds.
- */
- private static final Random random = new Random();
- /**
- * The channel associated with this session.
- */
- private final Channel channel;
- /**
- * The random long used for client-server handshake
- */
- private final String sessionId = Long.toString(random.nextLong(), 16).trim();
- /**
- * The protocol for this session
- */
- private AbstractProtocol protocol;
-
- /**
- * Creates a new session.
- *
- * @param channel The channel associated with this session.
- * @param bootstrapProtocol the protocol
- */
- public BasicSession(Channel channel, AbstractProtocol bootstrapProtocol) {
- this.channel = channel;
- this.protocol = bootstrapProtocol;
- }
-
- @SuppressWarnings("unchecked")
- private void handleMessage(Message message) {
- Class messageClass = (Class) message.getClass();
- MessageHandler handler = (MessageHandler) protocol.getMessageHandle(messageClass);
- if (handler != null) {
- try {
- handler.handle(this, message);
- } catch (Throwable t) {
- onHandlerThrowable(message, handler, t);
- }
- }
- }
-
- public ChannelFuture sendWithFuture(Message message) throws ChannelClosedException {
- if (!channel.isActive()) {
- throw new ChannelClosedException("Trying to send a message when a session is inactive!");
- }
- return channel.writeAndFlush(message).addListener(new GenericFutureListener>() {
- @Override
- public void operationComplete(Future super Void> future) throws Exception {
- if (future.cause() != null) {
- onOutboundThrowable(future.cause());
- }
- }
- });
- }
-
- @Override
- public void send(Message message) throws ChannelClosedException {
- sendWithFuture(message);
- }
-
- @Override
- public void sendAll(Message... messages) throws ChannelClosedException {
- for (Message msg : messages) {
- send(msg);
- }
- }
-
- /**
- * Returns the address of this session.
- *
- * @return The remote address.
- */
- public InetSocketAddress getAddress() {
- SocketAddress addr = channel.remoteAddress();
- if (!(addr instanceof InetSocketAddress)) {
- return null;
- }
-
- return (InetSocketAddress) addr;
- }
-
- @Override
- public String toString() {
- return getClass().getName() + " [address=" + channel.remoteAddress() + "]";
- }
-
- /**
- * Adds a message to the unprocessed queue.
- *
- * @param message The message.
- */
- @Override
- public void messageReceived(Message message) {
- handleMessage(message);
- }
-
- public String getSessionId() {
- return sessionId;
- }
-
- @Override
- public AbstractProtocol getProtocol() {
- return this.protocol;
- }
-
- protected void setProtocol(AbstractProtocol protocol) {
- this.protocol = protocol;
- }
-
- @Override
- public MessageProcessor getProcessor() {
- return null;
- }
-
- /**
- * True if this session is open and connected. If the session is closed, errors will be thrown if messages are attempted to be sent.
- *
- * @return is active
- */
- public boolean isActive() {
- return channel.isActive();
- }
-
- public Channel getChannel() {
- return channel;
- }
-
- @Override
- public void disconnect() {
- channel.close();
- }
-
- @Override
- public void onDisconnect() {
- }
-
- @Override
- public void onReady() {
- }
-
- @Override
- public void onInboundThrowable(Throwable throwable) {
- }
-
- public void onOutboundThrowable(Throwable throwable) {
- }
-
- /**
- * Called when an exception occurs during session handling
- *
- * @param message the message handler threw an exception on
- * @param handle handler that threw the an exception handling the message
- * @param throwable the throwable
- */
- public void onHandlerThrowable(Message message, MessageHandler,?> handle, Throwable throwable) {
- }
-
- public void setOption(ChannelOption option, T value) {
- channel.config().setOption(option, value);
- }
-
- @Override
- public Logger getLogger() {
- return protocol.getLogger();
- }
-}
diff --git a/src/main/java/com/flowpowered/network/session/PulsingSession.java b/src/main/java/com/flowpowered/network/session/PulsingSession.java
deleted file mode 100644
index 9fde3fe..0000000
--- a/src/main/java/com/flowpowered/network/session/PulsingSession.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.session;
-
-import java.util.ArrayDeque;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-import com.flowpowered.network.AsyncableMessage;
-import io.netty.channel.Channel;
-
-import com.flowpowered.network.Message;
-import com.flowpowered.network.exception.ChannelClosedException;
-import com.flowpowered.network.protocol.AbstractProtocol;
-
-/**
- * Represents a {@link BasicSession} which has both a {@link State} and {@link SendType}. It can queue messages if needed.
- */
-public class PulsingSession extends BasicSession {
- /**
- * A queue of incoming and unprocessed messages
- */
- private final Queue messageQueue = new ArrayDeque<>();
- /**
- * A queue of outgoing messages that will be sent after the client finishes identification
- */
- private final Queue sendQueue = new ConcurrentLinkedQueue<>();
- /**
- * The current state.
- */
- private State state = State.EXCHANGE_HANDSHAKE;
-
- /**
- * Creates a new pulsing session.
- *
- * @param channel The channel associated with this session.
- */
- public PulsingSession(Channel channel, AbstractProtocol bootstrapProtocol) {
- super(channel, bootstrapProtocol);
- }
-
- /**
- * Gets the state of this session.
- *
- * @return The session's state.
- */
- public State getState() {
- return state;
- }
-
- /**
- * Sets the state of this session.
- *
- * @param state The new state.
- */
- public void setState(State state) {
- this.state = state;
- }
-
- public void pulse() {
- Message message;
-
- if (state == State.OPEN) {
- while ((message = sendQueue.poll()) != null) {
- super.send(message);
- }
- }
-
- while ((message = messageQueue.poll()) != null) {
- super.messageReceived(message);
- }
- }
-
- @Override
- public void send(Message message) throws ChannelClosedException {
- send(SendType.QUEUE, message);
- }
-
- public void send(SendType type, Message message) throws ChannelClosedException {
- if (message == null) {
- return;
- }
- if (type == SendType.FORCE || this.state == State.OPEN) {
- super.send(message);
- } else if (type == SendType.QUEUE) {
- sendQueue.add(message);
- }
- }
-
- @Override
- public void sendAll(Message... messages) {
- sendAll(SendType.QUEUE, messages);
- }
-
- public void sendAll(SendType type, Message... messages) {
- for (Message msg : messages) {
- send(type, msg);
- }
- }
-
- /**
- * Adds a message to the unprocessed queue.
- *
- * @param message The message.
- */
- @Override
- public void messageReceived(Message message) {
- if (message instanceof AsyncableMessage) {
- if (((AsyncableMessage) message).isAsync()) {
- super.messageReceived(message);
- return;
- }
- }
- messageQueue.add(message);
- }
-
- /**
- * Specifies send behavior
- */
- public static enum SendType {
- /**
- * Messages sent with a SendType of OPEN_ONLY will only send if State is OPEN. Messages will not be
- * queued.
- */
- OPEN_ONLY, /**
- * Messages sent with a SendType of QUEUE will wait until State is OPEN to send. Messages may be queued.
- */
- QUEUE, /**
- * Messages sent with a SendType of FORCE will send as soon as possible regardless of State.
- */
- FORCE
- }
-
- public static enum State {
- /**
- * In the exchange handshake state, the server is waiting for the client to send its initial handshake
- * packet.
- */
- EXCHANGE_HANDSHAKE, /**
- * In the exchange identification state, the server is waiting for the client to send its identification
- * packet.
- */
- EXCHANGE_IDENTIFICATION, /**
- * In the exchange encryption state, the server is waiting for the client to send its encryption
- * response packet.
- */
- EXCHANGE_ENCRYPTION, /**
- * This state is when a critical message has been sent that must be waited for.
- */
- WAITING, /**
- * Allows messages to be sent.
- */
- OPEN
- }
-}
diff --git a/src/main/java/com/flowpowered/network/session/Session.java b/src/main/java/com/flowpowered/network/session/Session.java
deleted file mode 100644
index ec826a6..0000000
--- a/src/main/java/com/flowpowered/network/session/Session.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.session;
-
-
-import com.flowpowered.network.Message;
-import com.flowpowered.network.exception.ChannelClosedException;
-import com.flowpowered.network.processor.MessageProcessor;
-import com.flowpowered.network.protocol.Protocol;
-
-import org.slf4j.Logger;
-
-/**
- * Represents a connection to another engine.
- *
- * Controls the state, protocol and channels of a connection to another engine.
- */
-public interface Session {
- /**
- * Passes a message to a session for processing.
- *
- * @param message message to be processed
- */
- void messageReceived(T message);
-
- /**
- * Gets the protocol associated with this session.
- *
- * @return the protocol
- */
- Protocol getProtocol();
-
- MessageProcessor getProcessor();
-
- /**
- * Sends a message across the network.
- *
- * @param message The message.
- */
- void send(Message message) throws ChannelClosedException;
-
- /**
- * Sends any amount of messages to the client.
- *
- * @param messages the messages to send to the client
- */
- void sendAll(Message... messages) throws ChannelClosedException;
-
- /**
- * Closes the session.
- *
- */
- void disconnect();
-
- /**
- * Called after the Session has been disconnected, right before the Session is invalidated.
- *
- */
- void onDisconnect();
-
- /**
- * Called once the Session is ready for messages.
- *
- */
- void onReady();
-
- /**
- * Called when a throwable is thrown in the pipeline during inbound operations.
- *
- * @param throwable
- */
- void onInboundThrowable(Throwable throwable);
-
- Logger getLogger();
-}
diff --git a/src/main/java/com/flowpowered/network/util/AnnotatedMessageHandler.java b/src/main/java/com/flowpowered/network/util/AnnotatedMessageHandler.java
deleted file mode 100644
index ffc04f3..0000000
--- a/src/main/java/com/flowpowered/network/util/AnnotatedMessageHandler.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.util;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import com.flowpowered.network.Message;
-
-/**
- * A class for handling messages with annotated methods referred to as handles. The methods need to be annotated with {@link com.flowpowered.network.util.AnnotatedMessageHandler.Handle} and should only
- * have one parameter, the message, which needs to be a subclass of {@link com.flowpowered.network.Message}. These should be instance methods inside any class. When creating the annotated message
- * handler, an instance of the class containing the method is passed to the constructor. Handle methods will be called from this instance when handling messages. To handle a message, simply call
- * {@link #handle(com.flowpowered.network.Message)} with the said message as a parameter. The thread calling {@link #handle(com.flowpowered.network.Message)} is the same that calls the handle
- * method.
- */
-public class AnnotatedMessageHandler {
- private final Map, Method> handles = Collections.synchronizedMap(new HashMap, Method>());
- private final Object handler;
-
- /**
- * Constructs a new annotated message handler using the passed object as the source of handle methods.
- *
- * @param handler The message handler
- */
- public AnnotatedMessageHandler(Object handler) {
- this.handler = handler;
- registerHandlers();
- }
-
- /**
- * Handles the given message.
- *
- * @param message The message to handle
- */
- public void handle(Message message) {
- final Method handle = handles.get(message.getClass());
- if (handle == null) {
- throw new IllegalArgumentException("No handle for message type [" + message.getClass().getName() + "]");
- }
- try {
- handle.invoke(handler, message);
- } catch (Exception ex) {
- throw new RuntimeException("Failed to handle message [" + message + "]", ex);
- }
- }
-
- private void registerHandlers() {
- for (Method method : handler.getClass().getDeclaredMethods()) {
- if (method.isAnnotationPresent(Handle.class)) {
- final Class>[] parameterTypes = method.getParameterTypes();
- if (parameterTypes.length != 1) {
- throw new IllegalStateException("Expected only 1 parameter for message handler method [" + method.getName() + "]");
- }
- final Class> messageType = parameterTypes[0];
- if (!Message.class.isAssignableFrom(messageType)) {
- throw new IllegalStateException("Expected parameter to be a subclass of Message for handler method [" + method.getName() + "]");
- }
- method.setAccessible(true);
- handles.put(messageType, method);
- }
- }
- }
-
- /**
- * The annotation to mark message handle methods.
- */
- @Target (ElementType.METHOD)
- @Retention (RetentionPolicy.RUNTIME)
- public static @interface Handle {
- }
-}
diff --git a/src/main/java/com/flowpowered/network/util/ByteBufUtils.java b/src/main/java/com/flowpowered/network/util/ByteBufUtils.java
deleted file mode 100644
index 59b6015..0000000
--- a/src/main/java/com/flowpowered/network/util/ByteBufUtils.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.util;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-
-import io.netty.buffer.ByteBuf;
-
-/**
- * A class containing various utility methods that act on byte buffers.
- */
-public class ByteBufUtils {
- /**
- * Reads an UTF8 string from a byte buffer.
- *
- * @param buf The byte buffer to read from
- * @return The read string
- * @throws java.io.IOException If the reading fails
- */
- public static String readUTF8(ByteBuf buf) throws IOException {
- // Read the string's length
- final int len = readVarInt(buf);
- final byte[] bytes = new byte[len];
- buf.readBytes(bytes);
- return new String(bytes, StandardCharsets.UTF_8);
- }
-
- /**
- * Writes an UTF8 string to a byte buffer.
- *
- * @param buf The byte buffer to write too
- * @param value The string to write
- * @throws java.io.IOException If the writing fails
- */
- public static void writeUTF8(ByteBuf buf, String value) throws IOException {
- final byte[] bytes = value.getBytes(StandardCharsets.UTF_8);
- if (bytes.length >= Short.MAX_VALUE) {
- throw new IOException("Attempt to write a string with a length greater than Short.MAX_VALUE to ByteBuf!");
- }
- // Write the string's length
- writeVarInt(buf, bytes.length);
- buf.writeBytes(bytes);
- }
-
- /**
- * Reads an integer written into the byte buffer as one of various bit sizes.
- *
- * @param buf The byte buffer to read from
- * @return The read integer
- * @throws java.io.IOException If the reading fails
- */
- public static int readVarInt(ByteBuf buf) throws IOException {
- int out = 0;
- int bytes = 0;
- byte in;
- while (true) {
- in = buf.readByte();
- out |= (in & 0x7F) << (bytes++ * 7);
- if (bytes > 5) {
- throw new IOException("Attempt to read int bigger than allowed for a varint!");
- }
- if ((in & 0x80) != 0x80) {
- break;
- }
- }
- return out;
- }
-
- /**
- * Writes an integer into the byte buffer using the least possible amount of bits.
- *
- * @param buf The byte buffer to write too
- * @param value The integer value to write
- */
- public static void writeVarInt(ByteBuf buf, int value) {
- byte part;
- while (true) {
- part = (byte) (value & 0x7F);
- value >>>= 7;
- if (value != 0) {
- part |= 0x80;
- }
- buf.writeByte(part);
- if (value == 0) {
- break;
- }
- }
- }
-
- /**
- * Reads an integer written into the byte buffer as one of various bit sizes.
- *
- * @param buf The byte buffer to read from
- * @return The read integer
- * @throws java.io.IOException If the reading fails
- */
- public static long readVarLong(ByteBuf buf) throws IOException {
- long out = 0;
- int bytes = 0;
- byte in;
- while (true) {
- in = buf.readByte();
- out |= (in & 0x7F) << (bytes++ * 7);
- if (bytes > 10) {
- throw new IOException("Attempt to read long bigger than allowed for a varlong!");
- }
- if ((in & 0x80) != 0x80) {
- break;
- }
- }
- return out;
- }
-
- /**
- * Writes an integer into the byte buffer using the least possible amount of bits.
- *
- * @param buf The byte buffer to write too
- * @param value The long value to write
- */
- public static void writeVarLong(ByteBuf buf, long value) {
- byte part;
- while (true) {
- part = (byte) (value & 0x7F);
- value >>>= 7;
- if (value != 0) {
- part |= 0x80;
- }
- buf.writeByte(part);
- if (value == 0) {
- break;
- }
- }
- }
-}
diff --git a/src/test/java/com/flowpowered/network/fake/ChannelHandlerContextFaker.java b/src/test/java/com/flowpowered/network/fake/ChannelHandlerContextFaker.java
deleted file mode 100644
index de56906..0000000
--- a/src/test/java/com/flowpowered/network/fake/ChannelHandlerContextFaker.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.fake;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.buffer.Unpooled;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelConfig;
-
-import org.mockito.Mockito;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-public class ChannelHandlerContextFaker {
- private static FakeChannelHandlerContext context = null;
- private static Channel channel = null;
- private static ChannelConfig config = null;
- private static ByteBufAllocator alloc = null;
-
- public static FakeChannelHandlerContext setup() {
- if (context == null) {
- alloc();
- context = Mockito.mock(FakeChannelHandlerContext.class, Mockito.CALLS_REAL_METHODS);
- channel = Mockito.mock(Channel.class);
- config = Mockito.mock(ChannelConfig.class);
- Mockito.doReturn(channel).when(context).channel();
- Mockito.when(channel.config()).thenReturn(config);
- Mockito.when(config.getAllocator()).thenReturn(alloc);
- Answer answer = new Answer() {
- @Override
- public ByteBuf answer(InvocationOnMock invocation) throws Throwable {
- ByteBuf buffer = Unpooled.buffer();
- buffer.retain();
- return buffer;
- }
- };
- Mockito.when(alloc.buffer()).thenAnswer(answer);
- Mockito.when(alloc.buffer(Mockito.anyInt())).thenAnswer(answer);
- }
- return context;
- }
-
- public static ByteBufAllocator alloc() {
- if (alloc == null) {
- alloc = Mockito.mock(ByteBufAllocator.class);
- }
- return alloc;
- }
-}
diff --git a/src/test/java/com/flowpowered/network/fake/FakeChannelHandlerContext.java b/src/test/java/com/flowpowered/network/fake/FakeChannelHandlerContext.java
deleted file mode 100644
index a6cc2f8..0000000
--- a/src/test/java/com/flowpowered/network/fake/FakeChannelHandlerContext.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.fake;
-
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelHandlerContext;
-
-import java.util.concurrent.atomic.AtomicReference;
-
-import io.netty.buffer.ByteBuf;
-
-public abstract class FakeChannelHandlerContext implements ChannelHandlerContext {
- private AtomicReference ref;
-
- public void setReference(AtomicReference ref) {
- this.ref = ref;
- }
-
- @Override
- public ChannelHandlerContext fireChannelRead(Object msg) {
- if (ref != null && msg instanceof ByteBuf) {
- ref.set((ByteBuf) msg);
- }
- return this;
- }
-
- @Override
- public abstract Channel channel();
-
- @Override
- public boolean isRemoved() {
- return false;
- }
-
- @Override
- public ByteBufAllocator alloc() {
- return ChannelHandlerContextFaker.alloc();
- }
-}
-
diff --git a/src/test/java/com/flowpowered/network/pipeline/MessageProcessorDecoderTest.java b/src/test/java/com/flowpowered/network/pipeline/MessageProcessorDecoderTest.java
deleted file mode 100644
index a54dac6..0000000
--- a/src/test/java/com/flowpowered/network/pipeline/MessageProcessorDecoderTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.pipeline;
-
-import java.util.LinkedList;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicReference;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-
-import org.junit.Test;
-import static org.junit.Assert.assertTrue;
-
-import com.flowpowered.network.fake.ChannelHandlerContextFaker;
-import com.flowpowered.network.fake.FakeChannelHandlerContext;
-import com.flowpowered.network.processor.MessageProcessor;
-import com.flowpowered.network.processor.simple.SimpleMessageProcessor;
-
-public class MessageProcessorDecoderTest {
- private final int LENGTH = 65536;
- private final int BREAK = 17652;
-
- @Test
- public void test() throws Exception {
- // Preprocessor basically is split into two parts
- // Part 1 is just a direct copy
- // Part 2 negates all bytes before copying
- final AtomicReference processor = new AtomicReference<>();
- MessageProcessorDecoder processorDecoder = new MessageProcessorDecoder(null) {
- @Override
- protected MessageProcessor getProcessor() {
- return processor.get();
- }
- };
-
- // Set up a fake ChannelHandlerContext
- FakeChannelHandlerContext fake = ChannelHandlerContextFaker.setup();
- AtomicReference ref = new AtomicReference<>();
- fake.setReference(ref);
- LinkedList outputList = new LinkedList();
-
- Random r = new Random();
-
- // Get some random bytes for data
- byte[] input = new byte[LENGTH];
- r.nextBytes(input);
-
- boolean breakOccured = false;
- int position = 0;
-
- for (int i = 0; i < input.length;) {
- // Simulate real data read
- int burstSize = r.nextInt(512);
- // With a 1/10 chance of having an extra-large burst
- if (r.nextInt(10) == 0) {
- burstSize *= 10;
- }
-
- // Final burst needs to be clamped
- if (i + burstSize > input.length) {
- burstSize = input.length - i;
- }
-
- // And we can't negate in the middle of a burst
- if (i + burstSize > BREAK && !breakOccured) {
- burstSize = BREAK - i;
- }
-
- // Write info to a new ByteBuf
- final ByteBuf buf = Unpooled.buffer(burstSize);
- buf.retain();
- buf.writeBytes(input, i, burstSize);
- i += burstSize;
-
- // Fake a read
- processorDecoder.channelRead(fake, buf);
-
- final ByteBuf returned = ref.get();
-
- while (returned != null && true) {
- int packetSize = r.nextInt(128) + 1;
- if (r.nextInt(10) == 0) {
- packetSize *= 20;
- }
-
- if (packetSize > returned.readableBytes()) {
- packetSize = returned.readableBytes();
- }
- if (position + packetSize > BREAK && !breakOccured) {
- packetSize = BREAK - position;
- }
- if (position + packetSize > LENGTH) {
- packetSize = LENGTH - position;
- }
-
- if (packetSize == 0) {
- break;
- }
-
- byte[] array = new byte[packetSize];
-
- returned.readBytes(array);
- position += packetSize;
-
- if (position == BREAK) {
- processor.set(new NegatingProcessor(512));
- breakOccured = true;
- }
- outputList.add(array);
- }
- }
-
-
- // Get the output data and combine into one array
- byte[] output = new byte[LENGTH];
- int i = 0;
- for (byte[] array : outputList) {
- for (int j = 0; j < array.length; j++) {
- output[i++] = array[j];
- }
- }
-
- for (i = 0; i < input.length; i++) {
- byte expected = i < BREAK ? input[i] : (byte) ~input[i];
- if (output[i] != expected) {
- for (int j = Math.max(0, i - 10); j <= i + 10; j++) {
- System.out.println(j + ") " + Integer.toBinaryString(j < BREAK ? input[j] : (byte) ~input[j]) + " " + Integer.toBinaryString(output[j]));
- }
- }
-
- if (i < BREAK) {
- assertTrue("Input/Output mismatch at position " + i + ". Expected " + input[i] + " but got " + output[i] + ". Break is: " + BREAK, output[i] == input[i]);
- } else {
- assertTrue("Input/Output mismatch at position " + i + ", after the processor change. Expected " + (byte) ~input[i] + " but got " + output[i] + ". Break is: " + BREAK, output[i] == (byte) ~input[i]);
- }
- }
- }
-
- private static class NegatingProcessor extends SimpleMessageProcessor {
- byte[] buffer = new byte[65536];
- int readPointer = 0;
- int writePointer = 0;
- int mask = 0xFFFF;
-
- public NegatingProcessor(int capacity) {
- super(capacity);
- }
-
- @Override
- protected void writeEncode(byte[] buf, int length) {
- throw new UnsupportedOperationException("Test not written for encode.");
- }
-
- @Override
- protected int readEncode(byte[] buf) {
- throw new UnsupportedOperationException("Test not written for encode.");
- }
-
- @Override
- protected void writeDecode(byte[] buf, int length) {
- for (int i = 0; i < length; i++) {
- buffer[(writePointer++) & mask] = (byte) ~buf[i];
- }
- }
-
- @Override
- protected int readDecode(byte[] buf) {
- int i;
- for (i = 0; i < buf.length && readPointer < writePointer; i++) {
- buf[i] = buffer[(readPointer++) & mask];
- }
- return i;
- }
- }
-}
diff --git a/src/test/java/com/flowpowered/network/util/ByteBufUtilsTest.java b/src/test/java/com/flowpowered/network/util/ByteBufUtilsTest.java
deleted file mode 100644
index 7065941..0000000
--- a/src/test/java/com/flowpowered/network/util/ByteBufUtilsTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * This file is part of Flow Network, licensed under the MIT License (MIT).
- *
- * Copyright (c) 2013 Flow Powered
- *
- * 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.
- */
-package com.flowpowered.network.util;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import org.junit.Test;
-
-import static org.junit.Assert.fail;
-
-public class ByteBufUtilsTest {
- @Test
- public void testVarInt() throws Exception {
- final ByteBuf test = Unpooled.buffer();
- ByteBufUtils.writeVarInt(test, 1);
- final int varInt = ByteBufUtils.readVarInt(test);
- if (varInt != 1) {
- fail("The buffer had 1 wrote to it but received " + varInt + " instead!");
- }
- }
-
- @Test
- public void testUtf8() throws Exception {
- final ByteBuf test = Unpooled.buffer();
- ByteBufUtils.writeUTF8(test, "Hello");
- final String utf8String = ByteBufUtils.readUTF8(test);
- if (!"Hello".equals(utf8String)) {
- fail("The buffer had hello wrote to it but received " + utf8String + " instead!");
- }
- boolean exceptionThrown = false;
- try {
- ByteBufUtils.writeUTF8(test, new String(new byte[Short.MAX_VALUE + 1]));
- } catch (Exception ignore) {
- exceptionThrown = true;
- }
- if (!exceptionThrown) {
- fail("Writing more than Short.MAX_VALUE as a UTF8 String to the ByteBuf should have thrown an exception but it did not!");
- }
- }
-}
diff --git a/stylesheet.css b/stylesheet.css
new file mode 100644
index 0000000..cebb4fd
--- /dev/null
+++ b/stylesheet.css
@@ -0,0 +1,574 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+
+@import url('resources/fonts/dejavu.css');
+
+body {
+ background-color:#ffffff;
+ color:#353833;
+ font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+ font-size:14px;
+ margin:0;
+}
+a:link, a:visited {
+ text-decoration:none;
+ color:#4A6782;
+}
+a:hover, a:focus {
+ text-decoration:none;
+ color:#bb7a2a;
+}
+a:active {
+ text-decoration:none;
+ color:#4A6782;
+}
+a[name] {
+ color:#353833;
+}
+a[name]:hover {
+ text-decoration:none;
+ color:#353833;
+}
+pre {
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+}
+h1 {
+ font-size:20px;
+}
+h2 {
+ font-size:18px;
+}
+h3 {
+ font-size:16px;
+ font-style:italic;
+}
+h4 {
+ font-size:13px;
+}
+h5 {
+ font-size:12px;
+}
+h6 {
+ font-size:11px;
+}
+ul {
+ list-style-type:disc;
+}
+code, tt {
+ font-family:'DejaVu Sans Mono', monospace;
+ 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;
+}
+table tr td dt code {
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+ vertical-align:top;
+ padding-top:4px;
+}
+sup {
+ font-size:8px;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+ clear:both;
+ height:0px;
+ overflow:hidden;
+}
+.aboutLanguage {
+ float:right;
+ padding:0px 21px;
+ font-size:11px;
+ z-index:200;
+ margin-top:-9px;
+}
+.legalCopy {
+ margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+ color:#FFFFFF;
+ text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+ color:#bb7a2a;
+}
+.tab {
+ background-color:#0066FF;
+ color:#ffffff;
+ padding:8px;
+ width:5em;
+ font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+ background-color:#4D7A97;
+ color:#FFFFFF;
+ padding:.8em .5em .4em .8em;
+ height:auto;/*height:1.8em;*/
+ font-size:11px;
+ margin:0;
+}
+.topNav {
+ background-color:#4D7A97;
+ color:#FFFFFF;
+ float:left;
+ padding:0;
+ width:100%;
+ clear:right;
+ height:2.8em;
+ padding-top:10px;
+ overflow:hidden;
+ font-size:12px;
+}
+.bottomNav {
+ margin-top:10px;
+ background-color:#4D7A97;
+ color:#FFFFFF;
+ float:left;
+ padding:0;
+ width:100%;
+ clear:right;
+ height:2.8em;
+ padding-top:10px;
+ overflow:hidden;
+ font-size:12px;
+}
+.subNav {
+ background-color:#dee3e9;
+ float:left;
+ width:100%;
+ overflow:hidden;
+ font-size:12px;
+}
+.subNav div {
+ clear:left;
+ float:left;
+ padding:0 0 5px 6px;
+ text-transform:uppercase;
+}
+ul.navList, ul.subNavList {
+ float:left;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.navList li{
+ list-style:none;
+ float:left;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+ul.subNavList li{
+ list-style:none;
+ float:left;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+ color:#FFFFFF;
+ text-decoration:none;
+ text-transform:uppercase;
+}
+.topNav a:hover, .bottomNav a:hover {
+ text-decoration:none;
+ color:#bb7a2a;
+ text-transform:uppercase;
+}
+.navBarCell1Rev {
+ background-color:#F8981D;
+ color:#253441;
+ margin: auto 5px;
+}
+.skipNav {
+ position:absolute;
+ top:auto;
+ left:-9999px;
+ overflow:hidden;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+ clear:both;
+ margin:0 20px;
+ padding:5px 0 0 0;
+}
+.indexHeader {
+ margin:10px;
+ position:relative;
+}
+.indexHeader span{
+ margin-right:15px;
+}
+.indexHeader h1 {
+ font-size:13px;
+}
+.title {
+ color:#2c4557;
+ margin:10px 0;
+}
+.subTitle {
+ margin:5px 0 0 0;
+}
+.header ul {
+ margin:0 0 15px 0;
+ padding:0;
+}
+.footer ul {
+ margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+ list-style:none;
+ font-size:13px;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+ background-color:#dee3e9;
+ border:1px solid #d0d9e0;
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+ background-color:#dee3e9;
+ border:1px solid #d0d9e0;
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+ padding:0;
+ margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+ padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+ clear:both;
+ padding:10px 20px;
+ position:relative;
+}
+.indexContainer {
+ margin:10px;
+ position:relative;
+ font-size:12px;
+}
+.indexContainer h2 {
+ font-size:13px;
+ padding:0 0 3px 0;
+}
+.indexContainer ul {
+ margin:0;
+ padding:0;
+}
+.indexContainer ul li {
+ list-style:none;
+ padding-top:2px;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+ font-size:12px;
+ font-weight:bold;
+ margin:10px 0 0 0;
+ color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+ margin:5px 0 10px 0px;
+ font-size:14px;
+ font-family:'DejaVu Sans Mono',monospace;
+}
+.serializedFormContainer dl.nameValue dt {
+ margin-left:1px;
+ font-size:1.1em;
+ display:inline;
+ font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+ margin:0 0 0 1px;
+ font-size:1.1em;
+ display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+ display:inline;
+ font-size:0.9em;
+}
+ul.inheritance {
+ margin:0;
+ padding:0;
+}
+ul.inheritance li {
+ display:inline;
+ list-style:none;
+}
+ul.inheritance li ul.inheritance {
+ margin-left:15px;
+ padding-left:15px;
+ padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+ margin:10px 0 10px 0;
+ padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+ list-style:none;
+ margin-bottom:15px;
+ line-height:1.4;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+ padding:0px 20px 5px 10px;
+ border:1px solid #ededed;
+ background-color:#f8f8f8;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+ padding:0 0 5px 8px;
+ background-color:#ffffff;
+ border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+ margin-left:0;
+ padding-left:0;
+ padding-bottom:15px;
+ border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+ list-style:none;
+ border-bottom:none;
+ padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+ margin-top:0;
+ margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
+ width:100%;
+ border-left:1px solid #EEE;
+ border-right:1px solid #EEE;
+ border-bottom:1px solid #EEE;
+}
+.overviewSummary, .memberSummary {
+ padding:0px;
+}
+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
+ position:relative;
+ text-align:left;
+ background-repeat:no-repeat;
+ color:#253441;
+ font-weight:bold;
+ clear:none;
+ overflow:hidden;
+ padding:0px;
+ padding-top:10px;
+ padding-left:1px;
+ margin:0px;
+ white-space:pre;
+}
+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
+.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
+.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
+.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
+ color:#FFFFFF;
+}
+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary 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;
+}
+.memberSummary caption span.activeTableTab span {
+ white-space:nowrap;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
+ display:inline-block;
+ float:left;
+ background-color:#F8981D;
+ height:16px;
+}
+.memberSummary caption span.tableTab span {
+ white-space:nowrap;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
+ display:inline-block;
+ float:left;
+ background-color:#4D7A97;
+ height:16px;
+}
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
+ padding-top:0px;
+ padding-left:0px;
+ padding-right:0px;
+ background-image:none;
+ float:none;
+ display:inline;
+}
+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
+ display:none;
+ width:5px;
+ position:relative;
+ float:left;
+ background-color:#F8981D;
+}
+.memberSummary .activeTableTab .tabEnd {
+ display:none;
+ width:5px;
+ margin-right:3px;
+ position:relative;
+ float:left;
+ background-color:#F8981D;
+}
+.memberSummary .tableTab .tabEnd {
+ display:none;
+ width:5px;
+ margin-right:3px;
+ position:relative;
+ background-color:#4D7A97;
+ float:left;
+
+}
+.overviewSummary td, .memberSummary td, .typeSummary td,
+.useSummary td, .constantsSummary td, .deprecatedSummary td {
+ text-align:left;
+ padding:0px 0px 12px 10px;
+ width:100%;
+}
+th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
+td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
+ vertical-align:top;
+ padding-right:0px;
+ padding-top:8px;
+ padding-bottom:3px;
+}
+th.colFirst, th.colLast, th.colOne, .constantsSummary th {
+ background:#dee3e9;
+ text-align:left;
+ padding:8px 3px 3px 7px;
+}
+td.colFirst, th.colFirst {
+ white-space:nowrap;
+ font-size:13px;
+}
+td.colLast, th.colLast {
+ font-size:13px;
+}
+td.colOne, th.colOne {
+ font-size:13px;
+}
+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
+.overviewSummary td.colOne, .overviewSummary th.colOne,
+.memberSummary td.colFirst, .memberSummary th.colFirst,
+.memberSummary td.colOne, .memberSummary th.colOne,
+.typeSummary td.colFirst{
+ width:25%;
+ vertical-align:top;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+ font-weight:bold;
+}
+.tableSubHeadingColor {
+ background-color:#EEEEFF;
+}
+.altColor {
+ background-color:#FFFFFF;
+}
+.rowColor {
+ background-color:#EEEEEF;
+}
+/*
+Content styles
+*/
+.description pre {
+ margin-top:0;
+}
+.deprecatedContent {
+ margin:0;
+ padding:10px 0;
+}
+.docSummary {
+ padding:0;
+}
+
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+ font-style:normal;
+}
+
+div.block {
+ font-size:14px;
+ font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+
+td.colLast div {
+ padding-top:0px;
+}
+
+
+td.colLast a {
+ padding-bottom:3px;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+ color:green;
+ padding:0 30px 0 0;
+}
+h1.hidden {
+ visibility:hidden;
+ overflow:hidden;
+ font-size:10px;
+}
+.block {
+ display:block;
+ margin:3px 10px 2px 0px;
+ color:#474747;
+}
+.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
+.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
+.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
+ font-weight:bold;
+}
+.deprecationComment, .emphasizedPhrase, .interfaceName {
+ font-style:italic;
+}
+
+div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+ font-style:normal;
+}
+
+div.contentContainer ul.blockList li.blockList h2{
+ padding-bottom:0px;
+}