from nanome._internal import serializer_fields
from nanome.util import FileError
from nanome.api import structure
[docs]class CD(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "cd"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value)
[docs] def deserialize(self, version, context):
return FileError.safe_cast(context.read_int())
[docs]class CP(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "cp"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value[0])
context.write_using_serializer(self.__string, value[1])
[docs] def deserialize(self, version, context):
from nanome.util import FileError
return FileError.safe_cast(context.read_int())
[docs]class ExportFilesItem(serializer_fields.TypeSerializer):
def __init__(self):
self.__complex = structure.serializers.ComplexSerializer()
self.__string = serializer_fields.StringField()
self.__dict = serializer_fields.DictionaryField()
self.__dict.set_types(serializer_fields.LongField(), structure.serializers.AtomSerializer())
[docs] def version(self):
return 0
[docs] def name(self):
return "ExportFilesItem"
[docs] def serialize(self, version, value, context):
if isinstance(value, structure.models._Complex):
context.write_byte(1)
subcontext = context.create_sub_context()
subcontext.payload["Atom"] = {}
subcontext.write_using_serializer(self.__complex, value)
context.write_using_serializer(
self.__dict, subcontext.payload["Atom"])
context.write_bytes(subcontext.to_array())
elif isinstance(value, int):
context.write_byte(0)
context.write_long(value)
else:
raise TypeError(
'Trying to serialize an unsupported type for export files')
[docs] def deserialize(self, version, context):
result_type = context.read_byte()
if result_type == 0:
return context.read_using_serializer(self.__string)
elif result_type == 1:
res = context.read_byte_array()
if len(res) == 0:
return None
return res
[docs]class ExportFiles(serializer_fields.TypeSerializer):
def __init__(self):
self.__array = serializer_fields.ArrayField()
self.__array.set_type(ExportFilesItem())
[docs] def version(self):
return 0
[docs] def name(self):
return "ExportFiles"
[docs] def serialize(self, version, value, context):
context.write_byte(int(value[0]))
if (value[1] != None):
context.write_bool(True)
context.write_using_serializer(self.__array, value[1])
else:
context.write_bool(False)
[docs] def deserialize(self, version, context):
return context.read_using_serializer(self.__array)
[docs]class Get(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "get"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value)
[docs] def deserialize(self, version, context):
from nanome.util import FileError
error_code = FileError(context.read_int())
length = context.read_uint()
file = context.read_bytes(length)
return (error_code, file)
[docs]class LS(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
self.__array = serializer_fields.ArrayField()
self.__array.set_type(FileMeta())
[docs] def version(self):
return 0
[docs] def name(self):
return "ls"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value)
[docs] def deserialize(self, version, context):
from nanome.util import FileError
error_code = FileError.safe_cast(context.read_int())
filemetas = context.read_using_serializer(self.__array)
return error_code, filemetas
[docs]class MKDir(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "mkdir"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value)
[docs] def deserialize(self, version, context):
from nanome.util import FileError
return FileError.safe_cast(context.read_int())
[docs]class MV(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "mv"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value[0])
context.write_using_serializer(self.__string, value[1])
[docs] def deserialize(self, version, context):
from nanome.util import FileError
return FileError.safe_cast(context.read_int())
[docs]class Put(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "put"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value[0])
context.write_uint(len(value[1]))
context.write_bytes(value[1])
[docs] def deserialize(self, version, context):
from nanome.util import FileError
return FileError.safe_cast(context.read_int())
[docs]class PWD(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "pwd"
[docs] def serialize(self, version, value, context):
pass
[docs] def deserialize(self, version, context):
from nanome.util import FileError
error_code = FileError.safe_cast(context.read_int())
path = context.read_using_serializer(self.__string)
return (error_code, path)
[docs]class RM(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "rm"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value)
[docs] def deserialize(self, version, context):
from nanome.util import FileError
return FileError.safe_cast(context.read_int())
[docs]class RMDir(serializer_fields.TypeSerializer):
def __init__(self):
self.__string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "rmdir"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value)
[docs] def deserialize(self, version, context):
from nanome.util import FileError
return FileError.safe_cast(context.read_int())
[docs]class DirectoryRequest(serializer_fields.TypeSerializer):
# Deprecated
def __init__(self):
self.__string = serializer_fields.StringField()
self.__directory_entry_array = serializer_fields.ArrayField()
self.__directory_entry_array.set_type(serializer_fields.DirectoryEntryField())
[docs] def version(self):
return 0
[docs] def name(self):
return "Directory"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string, value._directory_name)
context.write_using_serializer(self.__string, value._pattern)
[docs] def deserialize(self, version, context):
from nanome.util import DirectoryRequestResult, DirectoryErrorCode
result = DirectoryRequestResult()
result.entry_array = context.read_using_serializer(
self.__directory_entry_array)
result.error_code = DirectoryErrorCode(context.read_int())
return result
[docs]class FileRequest(serializer_fields.TypeSerializer):
# Deprecated
def __init__(self):
self.__string_array = serializer_fields.ArrayField()
self.__string_array.set_type(serializer_fields.StringField())
self.__file_data_array = serializer_fields.ArrayField()
self.__file_data_array.set_type(serializer_fields.FileDataField())
[docs] def version(self):
return 0
[docs] def name(self):
return "FileRequest"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__string_array, value)
[docs] def deserialize(self, version, context):
return context.read_using_serializer(self.__file_data_array)
[docs]class FileSave(serializer_fields.TypeSerializer):
# Deprecated
def __init__(self):
self.__file_data_array = serializer_fields.ArrayField()
self.__file_data_array.set_type(serializer_fields.FileSaveDataField())
[docs] def version(self):
return 0
[docs] def name(self):
return "FileSave"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.__file_data_array, value)
[docs] def deserialize(self, version, context):
return context.read_using_serializer(self.__file_data_array)
[docs]class LoadFileInfo(serializer_fields.TypeSerializer):
def __init__(self):
self.string = serializer_fields.StringField()
[docs] def version(self):
return 0
[docs] def name(self):
return "LoadFileInfo"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.string, value[0])
context.write_byte_array(value[1])
[docs] def deserialize(self, version, context):
raise NotImplementedError
[docs]class LoadFile(serializer_fields.TypeSerializer):
def __init__(self):
self.array = serializer_fields.ArrayField()
self.array.set_type(LoadFileInfo())
[docs] def version(self):
return 0
[docs] def name(self):
return "LoadFile"
[docs] def serialize(self, version, value, context):
context.write_using_serializer(self.array, value[0])
context.write_bool(value[1])
context.write_bool(value[2])
[docs] def deserialize(self, version, context):
raise NotImplementedError
[docs]class LoadFileDoneInfo(serializer_fields.TypeSerializer):
[docs] def version(self):
return 0
[docs] def name(self):
return "LoadFileDoneInfo"
[docs] def serialize(self, version, value, context):
raise NotImplementedError
[docs] def deserialize(self, version, context):
from nanome.util.file import LoadInfoDone
from nanome.util.enums import LoadFileErrorCode
result = LoadInfoDone()
result.success = LoadFileErrorCode(context.read_byte())
return result
[docs]class LoadFileDone(serializer_fields.TypeSerializer):
def __init__(self):
self.array = serializer_fields.ArrayField()
self.array.set_type(LoadFileDoneInfo())
[docs] def version(self):
return 0
[docs] def name(self):
return "LoadFileDone"
[docs] def serialize(self, version, value, context):
raise NotImplementedError
[docs] def deserialize(self, version, context):
return context.read_using_serializer(self.array)
# classes