Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
BigDataViewer_Core_Extension
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
BioinformaticDataCompression
BigDataViewer_Core_Extension
Commits
7730dadd
Commit
7730dadd
authored
11 years ago
by
Tobias Pietzsch
Browse files
Options
Downloads
Patches
Plain Diff
added Jetty and Gson dependencies.
parent
795d67ad
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
pom.xml
+10
-0
10 additions, 0 deletions
pom.xml
src/main/java/bdv/server/BigDataServer.java
+135
-0
135 additions, 0 deletions
src/main/java/bdv/server/BigDataServer.java
with
145 additions
and
0 deletions
pom.xml
+
10
−
0
View file @
7730dadd
...
...
@@ -79,6 +79,16 @@
<artifactId>
vecmath
</artifactId>
<version>
1.3.1
</version>
</dependency>
<dependency>
<groupId>
org.eclipse.jetty
</groupId>
<artifactId>
jetty-server
</artifactId>
<version>
9.1.3.v20140225
</version>
</dependency>
<dependency>
<groupId>
com.google.code.gson
</groupId>
<artifactId>
gson
</artifactId>
<version>
2.2.4
</version>
</dependency>
</dependencies>
<developers>
...
...
This diff is collapsed.
Click to expand it.
src/main/java/bdv/server/BigDataServer.java
0 → 100644
+
135
−
0
View file @
7730dadd
package
server
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.io.ObjectOutputStream
;
import
java.io.OutputStream
;
import
java.util.ArrayList
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.xml.parsers.ParserConfigurationException
;
import
mpicbg.spim.data.SequenceDescription
;
import
net.imglib2.img.basictypeaccess.array.ShortArray
;
import
org.eclipse.jetty.server.Request
;
import
org.eclipse.jetty.server.Server
;
import
org.eclipse.jetty.server.handler.AbstractHandler
;
import
org.xml.sax.SAXException
;
import
viewer.SequenceViewsLoader
;
import
viewer.hdf5.Hdf5ImageLoader
;
import
viewer.hdf5.Hdf5ImageLoader.DimensionsInfo
;
import
viewer.hdf5.img.Hdf5Cell
;
import
viewer.hdf5.img.Hdf5GlobalCellCache
;
public
class
CellServer
{
public
static
void
main
(
final
String
[]
args
)
throws
Exception
{
final
String
fn
=
args
.
length
>
0
?
args
[
0
]
:
"/Users/pietzsch/Desktop/Valia/valia.xml"
;
final
Server
server
=
new
Server
(
8080
);
server
.
setHandler
(
new
CellHandler
(
fn
)
);
server
.
start
();
server
.
join
();
}
static
class
CellHandler
extends
AbstractHandler
{
final
Hdf5ImageLoader
imgLoader
;
final
Hdf5GlobalCellCache
<
ShortArray
>
cache
;
final
byte
[]
initObjects
;
public
CellHandler
(
final
String
xmlFilename
)
throws
ParserConfigurationException
,
SAXException
,
IOException
,
InstantiationException
,
IllegalAccessException
,
ClassNotFoundException
{
final
SequenceViewsLoader
loader
=
new
SequenceViewsLoader
(
xmlFilename
);
final
SequenceDescription
seq
=
loader
.
getSequenceDescription
();
imgLoader
=
(
Hdf5ImageLoader
)
seq
.
imgLoader
;
cache
=
imgLoader
.
getCache
();
final
ArrayList
<
double
[][]
>
perSetupResolutions
=
new
ArrayList
<
double
[][]
>();
for
(
int
setup
=
0
;
setup
<
seq
.
numViewSetups
();
++
setup
)
perSetupResolutions
.
add
(
imgLoader
.
getMipmapResolutions
(
setup
)
);
final
ByteArrayOutputStream
bs
=
new
ByteArrayOutputStream
();
final
ObjectOutputStream
os
=
new
ObjectOutputStream
(
bs
);
os
.
writeInt
(
seq
.
numTimepoints
()
);
os
.
writeObject
(
perSetupResolutions
);
os
.
close
();
initObjects
=
bs
.
toByteArray
();
}
@Override
public
void
handle
(
final
String
target
,
final
Request
baseRequest
,
final
HttpServletRequest
request
,
final
HttpServletResponse
response
)
throws
IOException
,
ServletException
{
final
String
cellString
=
request
.
getParameter
(
"p"
);
if
(
cellString
==
null
)
return
;
final
String
[]
parts
=
cellString
.
split
(
"/"
);
if
(
parts
[
0
].
equals
(
"cell"
)
)
{
final
int
index
=
Integer
.
parseInt
(
parts
[
1
]
);
final
int
timepoint
=
Integer
.
parseInt
(
parts
[
2
]
);
final
int
setup
=
Integer
.
parseInt
(
parts
[
3
]
);
final
int
level
=
Integer
.
parseInt
(
parts
[
4
]
);
Hdf5Cell
<
ShortArray
>
cell
=
cache
.
getGlobalIfCached
(
timepoint
,
setup
,
level
,
index
);
if
(
cell
==
null
)
{
final
int
[]
cellDims
=
new
int
[]
{
Integer
.
parseInt
(
parts
[
5
]
),
Integer
.
parseInt
(
parts
[
6
]
),
Integer
.
parseInt
(
parts
[
7
]
)
};
final
long
[]
cellMin
=
new
long
[]
{
Long
.
parseLong
(
parts
[
8
]
),
Long
.
parseLong
(
parts
[
9
]
),
Long
.
parseLong
(
parts
[
10
]
)
};
cell
=
cache
.
loadGlobal
(
cellDims
,
cellMin
,
timepoint
,
setup
,
level
,
index
);
}
final
short
[]
data
=
cell
.
getData
().
getCurrentStorageArray
();
final
byte
[]
buf
=
new
byte
[
2
*
data
.
length
];
for
(
int
i
=
0
,
j
=
0
;
i
<
data
.
length
;
i
++
)
{
final
short
s
=
data
[
i
];
buf
[
j
++
]
=
(
byte
)
(
(
s
>>
8
)
&
0xff
);
buf
[
j
++
]
=
(
byte
)
(
s
&
0xff
);
}
response
.
setContentType
(
"application/octet-stream"
);
response
.
setContentLength
(
buf
.
length
);
response
.
setStatus
(
HttpServletResponse
.
SC_OK
);
baseRequest
.
setHandled
(
true
);
final
OutputStream
os
=
response
.
getOutputStream
();
os
.
write
(
buf
);
os
.
close
();
// final byte[] buf = new byte[ 4096 ];
// for ( int i = 0, l = Math.min( buf.length / 2, data.length - i ); i < data.length; i += l )
// {
// ByteBuffer.wrap( buf ).asShortBuffer().put( data, i, l );
// os.write( buf, 0, 2 * l );
// }
// os.close();
}
else
if
(
parts
[
0
].
equals
(
"dim"
)
)
{
final
int
timepoint
=
Integer
.
parseInt
(
parts
[
1
]
);
final
int
setup
=
Integer
.
parseInt
(
parts
[
2
]
);
final
int
level
=
Integer
.
parseInt
(
parts
[
3
]
);
final
DimensionsInfo
info
=
imgLoader
.
getDimensionsInfo
(
timepoint
,
setup
,
level
);
response
.
setContentType
(
"application/octet-stream"
);
response
.
setStatus
(
HttpServletResponse
.
SC_OK
);
baseRequest
.
setHandled
(
true
);
final
ObjectOutputStream
os
=
new
ObjectOutputStream
(
response
.
getOutputStream
()
);
os
.
writeObject
(
info
);
os
.
close
();
}
else
if
(
parts
[
0
].
equals
(
"init"
)
)
{
response
.
setContentType
(
"application/octet-stream"
);
response
.
setStatus
(
HttpServletResponse
.
SC_OK
);
baseRequest
.
setHandled
(
true
);
final
OutputStream
os
=
response
.
getOutputStream
();
os
.
write
(
initObjects
);
os
.
close
();
}
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment