      - parameter tag:  The tag identifying the data in the callback delegate method.
      - parameter maxLength: Ignored since `GCDAsyncSocket` does not support this. The max length of data to scan for the pattern.
      - warning: This should only be called after the last read is finished, i.e., `delegate?.didReadData()` is called.
-     - warning: Not implemented yet.
      */
     func readDataToData(data: NSData, withTag tag: Int, maxLength: Int) {
-
+        readTag = tag
+        scanner = StreamScanner(pattern: data, maximumLength: maxLength)
+        checkStatus()
     }
 
     private func queueCall(block: ()->()) {

     - parameter data: The pattern.
     - parameter tag:  The tag identifying the data in the callback delegate method.
     - warning: This should only be called after the last read is finished, i.e., `delegate?.didReadData()` is called.
    - warning: Not implemented yet.
     */
    func readDataToData(data: NSData, withTag tag: Int) {
        readDataToData(data, withTag: tag, maxLength: 0)

     - parameter length: The length of the data to read.
     - parameter tag:    The tag identifying the data in the callback delegate method.
     - warning: This should only be called after the last read is finished, i.e., `delegate?.didReadData()` is called.
     */
    func readDataToLength(length: Int, withTag tag: Int) {
        readLength = length
        readTag = tag
        checkStatus()
    }

    /**
     Read data until a specific pattern (including the pattern).
