Class S3StorageDriver<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>

  • All Implemented Interfaces:
    com.emc.mongoose.base.concurrent.Daemon, com.emc.mongoose.base.storage.driver.StorageDriver<I,​O>, com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriver<I,​O>, com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriver<I,​O>, com.github.akurilov.commons.concurrent.AsyncRunnable, com.github.akurilov.commons.io.Input<O>, com.github.akurilov.commons.io.Output<O>, io.netty.channel.pool.ChannelPoolHandler, java.io.Closeable, java.lang.AutoCloseable, java.util.function.Consumer<O>, java.util.function.Supplier<O>

    public class S3StorageDriver<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
    extends com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I,​O>
    Created by kurila on 01.08.16.
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface com.github.akurilov.commons.concurrent.AsyncRunnable

        com.github.akurilov.commons.concurrent.AsyncRunnable.State
      • Nested classes/interfaces inherited from interface com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriver

        com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriver.Transport
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean fsAccess  
      protected boolean versioning  
      • Fields inherited from class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase

        dynamicHeaders, httpReqSentCallback, sharedHeaders
      • Fields inherited from class com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriverBase

        bootstrap, connAttemptsLimit, netTimeoutMilliSec, reqSentCallback, storageNodeAddrs, storageNodePort
      • Fields inherited from class com.emc.mongoose.storage.driver.coop.CoopStorageDriverBase

        childOpQueue, concurrencyThrottle
      • Fields inherited from class com.emc.mongoose.base.storage.driver.StorageDriverBase

        authTokens, concurrencyLimit, credential, ioWorkerCount, namespace, pathToCredMap, requestAuthTokenFunc, requestNewPathFunc, stepId, verifyFlag
      • Fields inherited from interface com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriver

        CHUNK_SIZE, HEADERS_LEN, KEY_CONTENT, REQ_LINE_LEN
      • Fields inherited from interface com.github.akurilov.commons.io.Input

        DELIMITER
      • Fields inherited from interface com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriver

        ATTR_KEY_OPERATION, IO_EXECUTOR_IMPLS, SOCKET_CHANNEL_IMPLS
      • Fields inherited from interface com.emc.mongoose.base.storage.driver.StorageDriver

        BUFF_SIZE_MAX, BUFF_SIZE_MIN
    • Constructor Summary

      Constructors 
      Constructor Description
      S3StorageDriver​(java.lang.String stepId, com.emc.mongoose.base.data.DataInput itemDataInput, com.github.akurilov.confuse.Config storageConfig, boolean verifyFlag, int batchSize)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void appendHandlers​(io.netty.channel.Channel channel)  
      protected void applyAuthHeaders​(io.netty.handler.codec.http.HttpHeaders httpHeaders, io.netty.handler.codec.http.HttpMethod httpMethod, java.lang.String dstUriPath, com.emc.mongoose.base.storage.Credential credential)  
      protected void applyCopyHeaders​(io.netty.handler.codec.http.HttpHeaders httpHeaders, java.lang.String srcPath)  
      protected void applyMetaDataHeaders​(io.netty.handler.codec.http.HttpHeaders httpHeaders)  
      void complete​(io.netty.channel.Channel channel, O op)  
      protected void enableBucketVersioning​(java.lang.String nodeAddr, java.lang.String bucketVersioningReqUri)  
      protected java.lang.String getCanonical​(io.netty.handler.codec.http.HttpHeaders httpHeaders, io.netty.handler.codec.http.HttpMethod httpMethod, java.lang.String dstUriPath)  
      protected void handleCheckBucketVersioningResponse​(io.netty.handler.codec.http.FullHttpResponse getBucketVersioningResp, java.lang.String nodeAddr, java.lang.String bucketVersioningReqUri)  
      protected io.netty.handler.codec.http.HttpRequest httpRequest​(O op, java.lang.String nodeAddr)  
      java.util.List<I> list​(com.emc.mongoose.base.item.ItemFactory<I> itemFactory, java.lang.String path, java.lang.String prefix, int idRadix, I lastPrevItem, int count)  
      protected io.netty.handler.codec.http.HttpMethod pathHttpMethod​(com.emc.mongoose.base.item.op.OpType opType)  
      protected java.lang.String pathUriPath​(I item, java.lang.String srcPath, java.lang.String dstPath, com.emc.mongoose.base.item.op.OpType opType)  
      protected java.lang.String requestNewAuthToken​(com.emc.mongoose.base.storage.Credential credential)  
      protected java.lang.String requestNewPath​(java.lang.String path)  
      protected io.netty.handler.codec.http.HttpMethod tokenHttpMethod​(com.emc.mongoose.base.item.op.OpType opType)  
      protected java.lang.String tokenUriPath​(I item, java.lang.String srcPath, java.lang.String dstPath, com.emc.mongoose.base.item.op.OpType opType)  
      java.lang.String toString()  
      • Methods inherited from class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase

        applyDynamicHeaders, applyRangesHeaders, applySharedHeaders, dataHttpMethod, dataUriPath, doClose, executeHttpRequest, rangeListToStringBuff, sendRequest, uriQuery
      • Methods inherited from class com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriverBase

        adjustIoBuffers, channelAcquired, channelCreated, channelReleased, createConnectionPool, doStart, doStop, getUnpooledConnection, sendRequestData, submit, submit, submit
      • Methods inherited from class com.emc.mongoose.storage.driver.coop.CoopStorageDriverBase

        activeOpCount, await, completedOpCount, doShutdown, handleCompleted, isIdle, put, put, put, scheduledOpCount
      • Methods inherited from class com.emc.mongoose.base.storage.driver.StorageDriverBase

        concurrencyLimit, get, get, getInput, hasRemainingResults, prepare, skip
      • Methods inherited from class com.emc.mongoose.base.concurrent.DaemonBase

        close, closeAll
      • Methods inherited from class com.github.akurilov.commons.concurrent.AsyncRunnableBase

        await, isClosed, isInitial, isShutdown, isStarted, isStopped, shutdown, start, state, stop
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface com.github.akurilov.commons.concurrent.AsyncRunnable

        await, await, isClosed, isInitial, isShutdown, isStarted, isStopped, shutdown, start, state
      • Methods inherited from interface java.util.function.Consumer

        andThen
      • Methods inherited from interface com.github.akurilov.commons.io.Input

        get, get, skip
      • Methods inherited from interface com.github.akurilov.commons.io.Output

        accept, getInput
      • Methods inherited from interface com.emc.mongoose.base.storage.driver.StorageDriver

        activeOpCount, adjustIoBuffers, close, completedOpCount, concurrencyLimit, hasRemainingResults, isIdle, put, put, put, reset, scheduledOpCount, stop
    • Field Detail

      • fsAccess

        protected final boolean fsAccess
      • versioning

        protected final boolean versioning
    • Constructor Detail

      • S3StorageDriver

        public S3StorageDriver​(java.lang.String stepId,
                               com.emc.mongoose.base.data.DataInput itemDataInput,
                               com.github.akurilov.confuse.Config storageConfig,
                               boolean verifyFlag,
                               int batchSize)
                        throws com.emc.mongoose.base.config.IllegalConfigurationException,
                               java.lang.InterruptedException
        Throws:
        com.emc.mongoose.base.config.IllegalConfigurationException
        java.lang.InterruptedException
    • Method Detail

      • requestNewPath

        protected java.lang.String requestNewPath​(java.lang.String path)
        Specified by:
        requestNewPath in class com.emc.mongoose.base.storage.driver.StorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • handleCheckBucketVersioningResponse

        protected void handleCheckBucketVersioningResponse​(io.netty.handler.codec.http.FullHttpResponse getBucketVersioningResp,
                                                           java.lang.String nodeAddr,
                                                           java.lang.String bucketVersioningReqUri)
      • enableBucketVersioning

        protected void enableBucketVersioning​(java.lang.String nodeAddr,
                                              java.lang.String bucketVersioningReqUri)
      • requestNewAuthToken

        protected final java.lang.String requestNewAuthToken​(com.emc.mongoose.base.storage.Credential credential)
        Specified by:
        requestNewAuthToken in class com.emc.mongoose.base.storage.driver.StorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • list

        public final java.util.List<I> list​(com.emc.mongoose.base.item.ItemFactory<I> itemFactory,
                                            java.lang.String path,
                                            java.lang.String prefix,
                                            int idRadix,
                                            I lastPrevItem,
                                            int count)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • httpRequest

        protected io.netty.handler.codec.http.HttpRequest httpRequest​(O op,
                                                                      java.lang.String nodeAddr)
                                                               throws java.net.URISyntaxException
        Overrides:
        httpRequest in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
        Throws:
        java.net.URISyntaxException
      • tokenHttpMethod

        protected final io.netty.handler.codec.http.HttpMethod tokenHttpMethod​(com.emc.mongoose.base.item.op.OpType opType)
        Specified by:
        tokenHttpMethod in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • pathHttpMethod

        protected final io.netty.handler.codec.http.HttpMethod pathHttpMethod​(com.emc.mongoose.base.item.op.OpType opType)
        Specified by:
        pathHttpMethod in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • tokenUriPath

        protected final java.lang.String tokenUriPath​(I item,
                                                      java.lang.String srcPath,
                                                      java.lang.String dstPath,
                                                      com.emc.mongoose.base.item.op.OpType opType)
        Specified by:
        tokenUriPath in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • pathUriPath

        protected final java.lang.String pathUriPath​(I item,
                                                     java.lang.String srcPath,
                                                     java.lang.String dstPath,
                                                     com.emc.mongoose.base.item.op.OpType opType)
        Specified by:
        pathUriPath in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • applyMetaDataHeaders

        protected void applyMetaDataHeaders​(io.netty.handler.codec.http.HttpHeaders httpHeaders)
        Specified by:
        applyMetaDataHeaders in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • complete

        public void complete​(io.netty.channel.Channel channel,
                             O op)
        Specified by:
        complete in interface com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriver<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
        Overrides:
        complete in class com.emc.mongoose.storage.driver.coop.netty.NettyStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • appendHandlers

        protected final void appendHandlers​(io.netty.channel.Channel channel)
        Overrides:
        appendHandlers in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • applyCopyHeaders

        protected final void applyCopyHeaders​(io.netty.handler.codec.http.HttpHeaders httpHeaders,
                                              java.lang.String srcPath)
                                       throws java.net.URISyntaxException
        Specified by:
        applyCopyHeaders in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
        Throws:
        java.net.URISyntaxException
      • applyAuthHeaders

        protected final void applyAuthHeaders​(io.netty.handler.codec.http.HttpHeaders httpHeaders,
                                              io.netty.handler.codec.http.HttpMethod httpMethod,
                                              java.lang.String dstUriPath,
                                              com.emc.mongoose.base.storage.Credential credential)
        Specified by:
        applyAuthHeaders in class com.emc.mongoose.storage.driver.coop.netty.http.HttpStorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>
      • getCanonical

        protected java.lang.String getCanonical​(io.netty.handler.codec.http.HttpHeaders httpHeaders,
                                                io.netty.handler.codec.http.HttpMethod httpMethod,
                                                java.lang.String dstUriPath)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class com.emc.mongoose.base.storage.driver.StorageDriverBase<I extends com.emc.mongoose.base.item.Item,​O extends com.emc.mongoose.base.item.op.Operation<I>>