1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
# Copyright (c) 2020-2024 Open Text.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
VerifyFiles message
VerifyFiles message is sent by the server when the client issues
a COPY FROM LOCAL command. The server parses the file names out
of the command, and sends them back to the client in this message.
The client has to verify that these files exist and are readable
before running the copy.
"""
from __future__ import print_function, division, absolute_import, annotations
from struct import unpack_from
from ..message import BackendMessage
class VerifyFiles(BackendMessage):
message_id = b'F'
def __init__(self, data):
BackendMessage.__init__(self)
files_count = unpack_from('!H', data, 0)[0]
self.input_files = [None] * files_count
pos = 2
for i in range(files_count):
filename = unpack_from("!{0}sx".format(data.find(b'\x00', pos) - pos), data, pos)[0]
self.input_files[i] = filename.decode('utf-8')
pos += len(filename) + 1
filename = unpack_from("!{0}sx".format(data.find(b'\x00', pos) - pos), data, pos)[0]
self.rejections_file = filename.decode('utf-8')
pos += len(filename) + 1
filename = unpack_from("!{0}sx".format(data.find(b'\x00', pos) - pos), data, pos)[0]
self.exceptions_file = filename.decode('utf-8')
def __str__(self):
return "VerifyFiles: InputFiles = {}, RejectedDataFile = {}, ExceptionsFile = {}".format(
self.input_files, self.rejections_file, self.exceptions_file)
BackendMessage.register(VerifyFiles)
|