'Store the contents of the *file_obj* at *path* on the *service_name*.
:param string/unicode service_name: the name of the shared folder for the *path*
:param string/unicode path: Path of the file on the remote server. If the file at *path* does not exist, it will be created.
If the *path* refers to a folder or the file cannot be opened for writing, an :doc:`OperationFailure<smb_exceptions>` will be raised.
:param file_obj: A file-like object that has a *read* method. Data will read continuously from *file_obj* until EOF.
:param offset: Long integer value which specifies the offset in the remote server to start writing. First byte of the file is 0.
:param truncate: Boolean value. If True and the file exists on the remote server, it will be truncated first before writing. Default is False.
:return: the file position where the next byte will be written.'

def storeFileFromOffset(self, service_name, path, file_obj, offset=0L, truncate=False, timeout=30):

    if (not self.sock):
        raise NotConnectedError('Not    connected    to    server')
    results = []
    def cb(r):
        self.is_busy = False
        results.append(r[1])
    def eb(failure):
        self.is_busy = False
        raise failure
    self.is_busy = True
    try:
        self._storeFileFromOffset(service_name, path, file_obj, cb, eb, offset, truncate=truncate, timeout=timeout)
        while self.is_busy:
            self._pollForNetBIOSPacket(timeout)
    finally:
        self.is_busy = False
    return results[0]
