         doResponse(respond(ATTWriteResponse()))
     }
     
-    private func handleReadRequest(opcode: ATT.Opcode, handle: UInt16, offset: UInt16 = 0) -> [UInt8]? {
+    private func handleReadRequest(opcode: ATT.Opcode,
+                                   handle: UInt16,
+                                   offset: UInt16 = 0,
+                                   isBlob: Bool = false) -> [UInt8]? {
         
         // no attributes
         guard database.attributes.isEmpty == false

            errorResponse(opcode, error, handle)
            return nil
        }
        
        // check boundary
        guard offset <= UInt16(attribute.value.count)

        
        log?("Read Blob (\(pdu.handle))")
        
        if let value = handleReadRequest(opcode: opcode, handle: pdu.handle, offset: pdu.offset, isBlob: true) {
            
            respond(ATTReadBlobResponse(partAttributeValue: value))
        }
