updating tox.py
This commit is contained in:
parent
4e7c6b309f
commit
a6f764bbb5
1 changed files with 48 additions and 30 deletions
78
src/tox.py
78
src/tox.py
|
@ -2,51 +2,69 @@
|
|||
from ctypes import *
|
||||
from settings import Settings
|
||||
from platform import system
|
||||
from toxcore_enums import *
|
||||
import os
|
||||
|
||||
|
||||
class ToxOptions(Structure):
|
||||
_fields_ = [
|
||||
("ipv6_enabled", c_bool),
|
||||
("udp_enabled", c_bool),
|
||||
("proxy_type", c_int),
|
||||
("proxy_host", c_char_p),
|
||||
("proxy_port", c_uint16),
|
||||
("start_port", c_uint16),
|
||||
("end_port", c_uint16),
|
||||
("tcp_port", c_uint16),
|
||||
("savedata_type", c_int),
|
||||
("savedata_data", c_char_p),
|
||||
("savedata_length", c_size_t)
|
||||
('ipv6_enabled', c_bool),
|
||||
('udp_enabled', c_bool),
|
||||
('proxy_type', c_int),
|
||||
('proxy_host', c_char_p),
|
||||
('proxy_port', c_uint16),
|
||||
('start_port', c_uint16),
|
||||
('end_port', c_uint16),
|
||||
('tcp_port', c_uint16),
|
||||
('savedata_type', c_int),
|
||||
('savedata_data', c_char_p),
|
||||
('savedata_length', c_size_t)
|
||||
]
|
||||
|
||||
|
||||
class Tox(object):
|
||||
|
||||
def __init__(self, name, path=None):
|
||||
# load toxcore
|
||||
if system() == 'Linux':
|
||||
temp = os.path.dirname(os.path.abspath(__file__)) + '/libs/'
|
||||
os.chdir(temp)
|
||||
self.libtoxcore = CDLL(temp + 'libtoxcore.so')
|
||||
elif system() == 'Windows':
|
||||
self.libtoxcore = CDLL('libs/libtox.dll')
|
||||
self.libtoxcore.tox_options_new.restype = POINTER(ToxOptions)
|
||||
|
||||
# load saved data
|
||||
if path is None:
|
||||
path = Settings.get_default_path()
|
||||
full_path = path + name + '.tox'
|
||||
with open(full_path, 'rb') as fl:
|
||||
data = fl.read()
|
||||
size = len(data)
|
||||
print size
|
||||
if system() == 'Linux':
|
||||
temp = os.path.dirname(os.path.abspath(__file__)) + '/libs/'
|
||||
os.chdir(temp)
|
||||
print temp
|
||||
self.libtoxcore = CDLL(temp + 'libtoxcore.so')
|
||||
elif system() == 'Windows':
|
||||
self.libtoxcore = CDLL('libs/libtox.dll')
|
||||
print self.libtoxcore.__dict__
|
||||
self.libtoxcore.tox_options_new.restype = POINTER(ToxOptions)
|
||||
# TODO: load from settings
|
||||
self.tox_options = self.libtoxcore.tox_options_new(0)
|
||||
self.tox_options.contents.savedata_length = size
|
||||
self.tox_options.contents.savedata_data = c_char_p(data)
|
||||
savedata = fl.read()
|
||||
settings = Settings()
|
||||
|
||||
# creating tox options struct
|
||||
tox_err = c_int()
|
||||
self.tox_options = self.libtoxcore.tox_options_new(addressof(tox_err))
|
||||
if tox_err == TOX_ERR_OPTIONS_NEW['TOX_ERR_OPTIONS_NEW_MALLOC']:
|
||||
raise MemoryError('The function failed to allocate enough memory for the options struct.')
|
||||
|
||||
# filling tox options struct
|
||||
self.tox_options.contents.ipv6_enabled = settings['ipv6_enabled']
|
||||
self.tox_options.contents.udp_enabled = settings['udp_enabled']
|
||||
self.tox_options.contents.proxy_type = settings['proxy_type']
|
||||
self.tox_options.contents.proxy_host = settings['proxy_host']
|
||||
self.tox_options.contents.proxy_port = settings['proxy_port']
|
||||
self.tox_options.contents.start_port = settings['start_port']
|
||||
self.tox_options.contents.end_port = settings['end_port']
|
||||
self.tox_options.contents.tcp_port = settings['tcp_port']
|
||||
self.tox_options.contents.savedata_type = TOX_SAVEDATA_TYPE['TOX_SAVEDATA_TYPE_TOX_SAVE']
|
||||
self.tox_options.contents.savedata_data = c_char_p(savedata)
|
||||
self.tox_options.contents.savedata_length = len(savedata)
|
||||
|
||||
# creating tox object
|
||||
self.libtoxcore.tox_new.restype = POINTER(c_void_p)
|
||||
self.tox = self.libtoxcore.tox_new(self.tox_options, None) # Tox *tox
|
||||
print self.tox.contents
|
||||
self.tox_pointer = self.libtoxcore.tox_new(self.tox_options, None)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if __name__ == '__main__':
|
||||
t = Tox('tox_save')
|
||||
|
|
Loading…
Reference in a new issue