gzip encoding for route result
This commit is contained in:
parent
a9e8731b3e
commit
664925133a
1 changed files with 24 additions and 2 deletions
|
@ -2,11 +2,13 @@ package btools.server;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.io.Writer;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
@ -20,6 +22,7 @@ import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
import java.util.zip.GZIPOutputStream;
|
||||||
|
|
||||||
import btools.router.OsmNodeNamed;
|
import btools.router.OsmNodeNamed;
|
||||||
import btools.router.OsmTrack;
|
import btools.router.OsmTrack;
|
||||||
|
@ -68,6 +71,7 @@ public class RouteServer extends Thread
|
||||||
// first line
|
// first line
|
||||||
String getline = null;
|
String getline = null;
|
||||||
String agent = null;
|
String agent = null;
|
||||||
|
String encodings = null;
|
||||||
|
|
||||||
// more headers until first empty line
|
// more headers until first empty line
|
||||||
for(;;)
|
for(;;)
|
||||||
|
@ -90,6 +94,10 @@ public class RouteServer extends Thread
|
||||||
{
|
{
|
||||||
agent = line.substring( "User-Agent: ".length() );
|
agent = line.substring( "User-Agent: ".length() );
|
||||||
}
|
}
|
||||||
|
if ( line.startsWith( "Accept-Encoding: " ) )
|
||||||
|
{
|
||||||
|
encodings = line.substring( "Accept-Encoding: ".length() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String excludedAgents = System.getProperty( "excludedAgents" );
|
String excludedAgents = System.getProperty( "excludedAgents" );
|
||||||
|
@ -194,10 +202,24 @@ public class RouteServer extends Thread
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
OsmTrack track = cr.getFoundTrack();
|
OsmTrack track = cr.getFoundTrack();
|
||||||
writeHttpHeader(bw, handler.getMimeType(), handler.getFileName());
|
|
||||||
|
String headers = encodings == null || encodings.indexOf( "gzip" ) < 0 ? null : "Content-Encoding: gzip\n";
|
||||||
|
writeHttpHeader(bw, handler.getMimeType(), handler.getFileName(), headers );
|
||||||
if ( track != null )
|
if ( track != null )
|
||||||
{
|
{
|
||||||
bw.write( handler.formatTrack(track) );
|
if ( headers != null ) // compressed
|
||||||
|
{
|
||||||
|
java.io.ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
Writer w = new OutputStreamWriter( new GZIPOutputStream( baos ), "UTF-8" );
|
||||||
|
w.write( handler.formatTrack(track) );
|
||||||
|
w.close();
|
||||||
|
bw.flush();
|
||||||
|
clientSocket.getOutputStream().write( baos.toByteArray() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bw.write( handler.formatTrack(track) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bw.flush();
|
bw.flush();
|
||||||
|
|
Loading…
Reference in a new issue