[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24651] trunk/blender/release/scripts/io/ netrender: Code cleanup in netrender

Martin Poirier theeth at yahoo.com
Wed Nov 18 18:07:43 CET 2009


Revision: 24651
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24651
Author:   theeth
Date:     2009-11-18 18:07:42 +0100 (Wed, 18 Nov 2009)

Log Message:
-----------
Code cleanup in netrender

Modified Paths:
--------------
    trunk/blender/release/scripts/io/netrender/client.py
    trunk/blender/release/scripts/io/netrender/operators.py
    trunk/blender/release/scripts/io/netrender/slave.py
    trunk/blender/release/scripts/io/netrender/utils.py

Modified: trunk/blender/release/scripts/io/netrender/client.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/client.py	2009-11-18 16:54:33 UTC (rev 24650)
+++ trunk/blender/release/scripts/io/netrender/client.py	2009-11-18 17:07:42 UTC (rev 24651)
@@ -200,14 +200,14 @@
 
 
 	def render_slave(self, scene):
-		slave.render_slave(self, scene)
+		slave.render_slave(self, scene.network_render)
 	
 	def render_client(self, scene):
 		netsettings = scene.network_render
 		self.update_stats("", "Network render client initiation")
 		
 		
-		conn = clientConnection(scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			# Sending file

Modified: trunk/blender/release/scripts/io/netrender/operators.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/operators.py	2009-11-18 16:54:33 UTC (rev 24650)
+++ trunk/blender/release/scripts/io/netrender/operators.py	2009-11-18 17:07:42 UTC (rev 24651)
@@ -36,8 +36,9 @@
 	
 	def execute(self, context):
 		scene = context.scene
+		netsettings = scene.network_render
 		
-		conn = clientConnection(scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			# Sending file
@@ -62,8 +63,9 @@
 	
 	def execute(self, context):
 		scene = context.scene
+		netsettings = scene.network_render
 		
-		conn = clientConnection(scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			# Sending file
@@ -86,7 +88,7 @@
 	
 	def execute(self, context):
 		netsettings = context.scene.network_render
-		conn = clientConnection(context.scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 
 		if conn:
 			conn.request("GET", "/status")
@@ -187,7 +189,7 @@
 	
 	def execute(self, context):
 		netsettings = context.scene.network_render
-		conn = clientConnection(context.scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			conn.request("GET", "/slaves")
@@ -233,7 +235,7 @@
 		
 	def execute(self, context):
 		netsettings = context.scene.network_render
-		conn = clientConnection(context.scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			job = bpy.netrender_jobs[netsettings.active_job_index]
@@ -261,7 +263,7 @@
 		
 	def execute(self, context):
 		netsettings = context.scene.network_render
-		conn = clientConnection(context.scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			conn.request("POST", "/clear")
@@ -291,7 +293,7 @@
 		netsettings = context.scene.network_render
 		rd = context.scene.render_data
 		
-		conn = clientConnection(context.scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			job = bpy.netrender_jobs[netsettings.active_job_index]
@@ -332,26 +334,16 @@
 		return True
 		
 	def execute(self, context):
-		netsettings = context.scene.network_render
+		address, port = clientScan()
+
+		if address:
+			scene = context.scene
+			netsettings = scene.network_render
+			netsettings.server_address = address
+			netsettings.server_port = port
 		
-		try:
-			s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-			s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
-			s.settimeout(30)
-	
-			s.bind(('', 8000))
-			
-			buf, address = s.recvfrom(64)
-			
-			print("received:", buf)
-			
-			netsettings.server_address = address[0]
-			netsettings.server_port = int(str(buf, encoding='utf8'))
-		except socket.timeout:
-			print("no server info")
-		
 		return ('FINISHED',)
-	
+
 	def invoke(self, context, event):
 		return self.execute(context)
 
@@ -369,7 +361,7 @@
 		
 		
 		# open connection to make sure server exists
-		conn = clientConnection(context.scene)
+		conn = clientConnection(netsettings.server_address, netsettings.server_port)
 		
 		if conn:
 			conn.close()

Modified: trunk/blender/release/scripts/io/netrender/slave.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/slave.py	2009-11-18 16:54:33 UTC (rev 24650)
+++ trunk/blender/release/scripts/io/netrender/slave.py	2009-11-18 17:07:42 UTC (rev 24651)
@@ -23,6 +23,8 @@
 from netrender.utils import *
 import netrender.model
 
+BLENDER_PATH = sys.argv[0]
+
 CANCEL_POLL_SPEED = 2
 MAX_TIMEOUT = 10
 INCREMENT_TIMEOUT = 1
@@ -85,13 +87,12 @@
 	return job_full_path
 
 
-def render_slave(engine, scene):
-	netsettings = scene.network_render
+def render_slave(engine, netsettings):
 	timeout = 1
 	
 	engine.update_stats("", "Network render node initiation")
 	
-	conn = clientConnection(scene)
+	conn = clientConnection(netsettings.server_address, netsettings.server_port)
 	
 	if conn:
 		conn.request("POST", "/slave", repr(slave_Info().serialize()))
@@ -150,7 +151,7 @@
 						frame_args += ["-f", str(frame.number)]
 					
 					val = SetErrorMode()
-					process = subprocess.Popen([sys.argv[0], "-b", job_full_path, "-o", JOB_PREFIX + "######", "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+					process = subprocess.Popen([BLENDER_PATH, "-b", job_full_path, "-o", JOB_PREFIX + "######", "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
 					RestoreErrorMode(val)
 				elif job.type == netrender.model.JOB_PROCESS:
 					command = job.frames[0].command
@@ -240,3 +241,6 @@
 						return
 			
 		conn.close()
+
+if __name__ == "__main__":
+	pass
\ No newline at end of file

Modified: trunk/blender/release/scripts/io/netrender/utils.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/utils.py	2009-11-18 16:54:33 UTC (rev 24650)
+++ trunk/blender/release/scripts/io/netrender/utils.py	2009-11-18 17:07:42 UTC (rev 24651)
@@ -16,14 +16,18 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-import bpy
 import sys, os
 import re
-import http, http.client, http.server, urllib
+import http, http.client, http.server, urllib, socket
 import subprocess, shutil, time, hashlib
 
 import netrender.model
 
+try:
+  import bpy
+except:
+  bpy = None
+
 VERSION = b"0.5"
 
 # Jobs status
@@ -39,28 +43,48 @@
 ERROR = 3
 
 STATUS_TEXT = {
-								QUEUED: "Queued",
-								DISPATCHED: "Dispatched",
-								DONE: "Done",
-								ERROR: "Error"
-							}
+		QUEUED: "Queued",
+		DISPATCHED: "Dispatched",
+		DONE: "Done",
+		ERROR: "Error"
+		}
 
 def rnaType(rna_type):
-	bpy.types.register(rna_type)
+	if bpy: bpy.types.register(rna_type)
 	return rna_type
 
 def rnaOperator(rna_op):
-	bpy.ops.add(rna_op)
+	if bpy: bpy.ops.add(rna_op)
 	return rna_op
 
-def clientConnection(scene):
-		netsettings = scene.network_render
+def clientScan():
+	try:
+		s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+		s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+		s.settimeout(30)
+
+		s.bind(('', 8000))
 		
-		if netsettings.server_address == "[default]":
-			bpy.ops.render.netclientscan()
+		buf, address = s.recvfrom(64)
 		
-		conn = http.client.HTTPConnection(netsettings.server_address, netsettings.server_port)
+		print("received:", buf)
 		
+		address = address[0]
+		port = int(str(buf, encoding='utf8'))
+		return (address, port)
+	except socket.timeout:
+		print("no server info")
+		return ("", 8000) # return default values
+
+def clientConnection(address, port):
+		if address == "[default]":
+			if bpy:
+				bpy.ops.render.netclientscan()
+			else:
+				address, port = clientScan()
+		
+		conn = http.client.HTTPConnection(address, port)
+		
 		if clientVerifyVersion(conn):
 			return conn
 		else:





More information about the Bf-blender-cvs mailing list