import time
from fcpconnection import FCPConnection, PolledSocket
from fcpclient import FCPClient
def insert_files(host, port, names):
socket = PolledSocket(host, port)
connection = FCPConnection(socket, True)
inserts = []
for name in names:
client = FCPClient(connection)
client.in_params.default_fcp_params['MaxRetries'] = 3
client.in_params.default_fcp_params['PriorityClass'] = 1
inserts.append(client)
client.in_params.async = True
parts = name.split('/')
client.put_file('CHK@' + '/' + parts[-1], name)
# Hmmmm... Ugly. Add FCPConnection.wait_until_upload_finishes() ?
while connection.is_uploading():
socket.poll()
time.sleep(.25)
while min([insert.is_finished() for insert in inserts]) == False:
if not socket.poll():
break
time.sleep(.25)
uris = []
for insert in inserts:
if insert.response == None or len(insert.response) < 2 or insert.response[0] <> 'PutSuccessful':
uris.append(None)
continue
uris.append(insert.response[1]['URI'])
return uris
FCP_HOST = '127.0.0.1'
FCP_PORT = 19481
FILES = ['/tmp/0.txt', '/tmp/1.txt', '/tmp/2.txt' ]
def main():
uris = insert_files(FCP_HOST, FCP_PORT, FILES)
for name, uri in zip(FILES, uris):
print "---"
print name
print uri
print "---"
#main()