Blender-Pipeline/network/insure.py
Jeison Yehuda Amihud (Blender Dumbass) ba370b7cb1 Multiuser Alpha 1.0
This is the historic moment When the multiuser was implemented.
2021-01-02 23:31:37 +00:00

154 lines
4.2 KiB
Python

# THIS FILE IS A PART OF VCStudio
# PYTHON 3
###############################################################################
# With the Multiuser system. It became clear early on that simply using the UDP
# protocol would not be cool. Because it's just not checking enough things.
# In my point of view. I want to send to the end network all the data directly
# and not care too much about what format it is in and stuff.
# So this file will insure that the data will be transferred what ever it is
# just as is. The hard part will be here.
###############################################################################
import json
def send(c, message):
# This function will do the sending of the message. I will treat every
# message as if it's a file. And will write everything into a json format
# for transferring. Unless it's already in binarry. In which case I will
# keep it that way.
# The mode will be either B ( bytes ) or J ( json ). All the rest will
# handalled by the json madule hopefully.
T = b"B"
if type(message) != bytes:
T = b"J"
message = bytes(json.dumps(message), 'utf-8')
# So now it's bytes anyway and it means we can send it over the network.
# This will be done in 3 stages. TYPE ( T ), AMOUNT ( len(message) )
# and the message it self. Always.
# Now we we going to wait for a send message from the other side.
m = c.recv(4)
m = m.decode('utf8')
while m != "SEND":
print("DE-SYNCED! '"+m+"' NOT 'SEND'")
c.sendall(b"N")
m = c.recv(4)
m = m.decode('utf8')
c.sendall(T)
c.recv(2)
c.sendall(bytes(str(len(message)), 'utf-8'))
c.recv(2)
c.sendall(message)
c.recv(2)
def recv(c):
# This function will do the recieving of the message.
# I guess in order to fix most of the problems with this recv function
# which is a little unsynsing here and there. I will make a fail switch
# so it wil alight it self properly even it network if hidby, bibdy or
# any of my server or client code is terribly unrelible.
c.sendall(b"SEND")
# It might fail or it might work
T = c.recv(1)
T = T.decode('utf8')
tr = 0
while T not in ["B", "J"]:
print("DE-SYNCED! '"+T+"' NOT 'J' OR 'B'")
c.sendall(b"SEND")
T = c.recv(1)
T = T.decode('utf8')
tr = tr + 1
if tr == 8:
exit()
c.sendall(b"OK")
# So here we just recieved the T , Type of our message
SIZE = c.recv(1024)
SIZE = int(SIZE.decode('utf8'))
# Now we recieved our amount. Next is to recieve the message
c.sendall(b"OK")
message = b""
cs = 0
while SIZE > cs:
l = c.recv(SIZE)
cs = cs + len(l)
message = message + l
c.sendall(b"OK")
message[SIZE:]
# Now let's ge the data back from JSON id it's a JSON.
if T == "J":
message = json.loads(message.decode('utf8'))
return message
# P for Pain
# Can't afford to feel the joy
# Can't find strength to feel the pain
# I'll shrink and go and feel no more
# Is it fine to be lame?
# I don't want death. Since death
# Has an opposite effect
# From suffering from being lame
# Death is opposite of pain
# An importance of the pain
# Is that joy is just a drug
# Such as suffering and pain
# It's a head confusing bug
# Joyful, satisfying shit
# make you feel comfortable
# But discomfort and the pain
# It's what is affordable
# Lameness feel pathetic shit
# Me described using four words
# No more joy, only regrets
# Five more words of discomfort
# Shrink from big and fall from tall
# Give up everything you have
# Go homeless, starve, and suffer. Feel.
# The pain inducing hollow and venomous discomfort,
# swallowing all and every thought and only
# pain. Pain. And nothing more exists.
# And nothing more is fair.
# Can't afford to feel the joy
# But find strength to feel the pain
# I'll shrink and go and feel no more
# It is fine to be lame.
# https://open.lbry.com/@blenderdumbass:f/P-for-Pain:f?r=GRS5mK5GDEGa77vRotG4LwMqPCyhpF2k