|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eclipse.jgit.transport.UploadPack
public class UploadPack
Implements the server side of a fetch connection, transmitting objects.
Nested Class Summary | |
---|---|
static class |
UploadPack.FirstLine
Data in the first line of a request, the line itself plus options. |
static class |
UploadPack.RequestPolicy
Policy the server uses to validate client requests |
Constructor Summary | |
---|---|
UploadPack(Repository copyFrom)
Create a new pack upload for an open repository. |
Method Summary | |
---|---|
Map<String,Ref> |
getAdvertisedRefs()
Get refs which were advertised to the client. |
AdvertiseRefsHook |
getAdvertiseRefsHook()
|
UploadPackLogger |
getLogger()
|
PackWriter.Statistics |
getPackStatistics()
Get the PackWriter's statistics if a pack was sent to the client. |
PreUploadHook |
getPreUploadHook()
|
RefFilter |
getRefFilter()
|
Repository |
getRepository()
|
UploadPack.RequestPolicy |
getRequestPolicy()
|
RevWalk |
getRevWalk()
|
int |
getTimeout()
|
boolean |
isBiDirectionalPipe()
|
boolean |
isSideBand()
Check whether the client expects a side-band stream. |
void |
sendAdvertisedRefs(RefAdvertiser adv)
Generate an advertisement of available refs and capabilities. |
void |
setAdvertisedRefs(Map<String,Ref> allRefs)
Set the refs advertised by this UploadPack. |
void |
setAdvertiseRefsHook(AdvertiseRefsHook advertiseRefsHook)
Set the hook used while advertising the refs to the client. |
void |
setBiDirectionalPipe(boolean twoWay)
|
void |
setLogger(UploadPackLogger logger)
Set the logger. |
void |
setPackConfig(PackConfig pc)
Set the configuration used by the pack generator. |
void |
setPreUploadHook(PreUploadHook hook)
Set the hook that controls how this instance will behave. |
void |
setRefFilter(RefFilter refFilter)
Set the filter used while advertising the refs to the client. |
void |
setRequestPolicy(UploadPack.RequestPolicy policy)
|
void |
setTimeout(int seconds)
Set the timeout before willing to abort an IO call. |
void |
upload(InputStream input,
OutputStream output,
OutputStream messages)
Execute the upload task on the socket. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public UploadPack(Repository copyFrom)
copyFrom
- the source repository.Method Detail |
---|
public final Repository getRepository()
public final RevWalk getRevWalk()
public final Map<String,Ref> getAdvertisedRefs()
setAdvertisedRefs(Map)
has not been called yet.public void setAdvertisedRefs(Map<String,Ref> allRefs)
Intended to be called from a PreUploadHook
.
allRefs
- explicit set of references to claim as advertised by this
UploadPack instance. This overrides any references that
may exist in the source repository. The map is passed
to the configured getRefFilter()
. If null, assumes
all refs were advertised.public int getTimeout()
public void setTimeout(int seconds)
seconds
- number of seconds to wait (with no data transfer occurring)
before aborting an IO read or write operation with the
connected client.public boolean isBiDirectionalPipe()
public void setBiDirectionalPipe(boolean twoWay)
twoWay
- if true, this class will assume the socket is a fully
bidirectional pipe between the two peers and takes advantage
of that by first transmitting the known refs, then waiting to
read commands. If false, this class assumes it must read the
commands before writing output and does not perform the
initial advertising.public UploadPack.RequestPolicy getRequestPolicy()
public void setRequestPolicy(UploadPack.RequestPolicy policy)
policy
- the policy used to enforce validation of a client's want list.
By default the policy is UploadPack.RequestPolicy.ADVERTISED
,
which is the Git default requiring clients to only ask for an
object that a reference directly points to. This may be relaxed
to UploadPack.RequestPolicy.REACHABLE_COMMIT
when callers
have setBiDirectionalPipe(boolean)
set to false.public AdvertiseRefsHook getAdvertiseRefsHook()
public RefFilter getRefFilter()
public void setAdvertiseRefsHook(AdvertiseRefsHook advertiseRefsHook)
If the AdvertiseRefsHook
chooses to call
setAdvertisedRefs(Map)
, only refs set by this hook and
selected by the RefFilter
will be shown to the client.
advertiseRefsHook
- the hook; may be null to show all refs.public void setRefFilter(RefFilter refFilter)
Only refs allowed by this filter will be sent to the client.
The filter is run against the refs specified by the
AdvertiseRefsHook
(if applicable).
refFilter
- the filter; may be null to show all refs.public PreUploadHook getPreUploadHook()
public void setPreUploadHook(PreUploadHook hook)
hook
- the hook; if null no special actions are taken.public void setPackConfig(PackConfig pc)
pc
- configuration controlling packing parameters. If null the
source repository's settings will be used.public UploadPackLogger getLogger()
public void setLogger(UploadPackLogger logger)
logger
- the logger instance. If null, no logging occurs.public boolean isSideBand() throws RequestNotYetReadException
RequestNotYetReadException
- if the client's request has not yet been read from the wire, so
we do not know if they expect side-band. Note that the client
may have already written the request, it just has not been
read.public void upload(InputStream input, OutputStream output, OutputStream messages) throws IOException
input
- raw input to read client commands from. Caller must ensure the
input is buffered, otherwise read performance may suffer.output
- response back to the Git network client, to write the pack
data onto. Caller must ensure the output is buffered,
otherwise write performance may suffer.messages
- secondary "notice" channel to send additional messages out
through. When run over SSH this should be tied back to the
standard error channel of the command execution. For most
other network connections this should be null.
IOException
public PackWriter.Statistics getPackStatistics()
public void sendAdvertisedRefs(RefAdvertiser adv) throws IOException, ServiceMayNotContinueException
adv
- the advertisement formatter.
IOException
- the formatter failed to write an advertisement.
ServiceMayNotContinueException
- the hook denied advertisement.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |