Hi techies

I am back at shared app development. I am in the process of trying to port
the shared image
thing over to the AG2.3. I downloaded the new software and installed it. I
did a pretty complete
rewrite of the AGBasicImage.py app following the shared app developers
guide in the wiki. It
has the shared browser look and feel now. Except for the fact that it
doesnt work. I followed the
shared app gotcha's in the wiki to try to run the application as a console
application so I could
get some debug output. I got a little of that. The main problem seems to be
connecting to
the venue. I have attached the shared image code and the venueclient.log
and the shared image
log file from the most recent run. I get some crazy errors in the shared
image file that I
just cant track down. There may be other bugs in the application that I
have not gotten to yet
but I cant find them if I cant connect to the venue. So could someone give
me a tip as to what
I am doing wrong here?

Regards,
Dave

Dave Semeraro Ph.D.
Visualization and Virtual Environments Group
NCSA University of Illinois
605 E. Springfield Ave.
Champaign, IL 61820
semer...@ncsa.uiuc.edu
(217) 244-1852
09/13/04 16:22:11 3532 Toolkit     toolkit.py:90 DEBUG Initializing AG Toolkit 
version 2.3
09/13/04 16:22:11 3532 Toolkit     toolkit.py:132 INFO  Logfile Name: 
SharedImageViewer.log
09/13/04 16:22:11 3532 Toolkit     config.py:196 DEBUG Using 
GLOBUS_HOSTNAME=zim.ncsa.uiuc.edu as set in the environment
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:257 DEBUG 
Opened repository C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\Config\certRepo
09/13/04 16:22:11 3532 Toolkit     toolkit.py:395 DEBUG Got repo.
09/13/04 16:22:11 3532 Toolkit     toolkit.py:397 DEBUG looking in system ca 
dir: C:\Program Files\AGTk-2.3\Config\CAcertificates
09/13/04 16:22:11 3532 Toolkit     toolkit.py:401 DEBUG Getting cert: 1c3f2ca8.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\1c3f2ca8.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:401 DEBUG Getting cert: 45cc9e80.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\45cc9e80.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:401 DEBUG Getting cert: d1b603c3.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\d1b603c3.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:401 DEBUG Getting cert: f18fa857.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\f18fa857.0
09/13/04 16:22:11 3532 Toolkit     toolkit.py:410 DEBUG Init'ing globus.
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:734 DEBUG 
Configuring standard environment
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:802 DEBUG 
Using default identity /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:873 DEBUG 
Initializing environment with proxy cert for /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:907 DEBUG 
Looking for identity (unused) None
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:892 DEBUG 
Configuring for user proxy issued from /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:895 DEBUG 
Proxy C:\DOCUME~1\semeraro\LOCALS~1\Temp\proxy will expire 09/13/04 16:58:25
09/13/04 16:22:11 3532 CertificateManager     certificatemanager.py:1479 DEBUG 
done, success=1
09/13/04 16:22:11 3532 Toolkit     toolkit.py:414 DEBUG Done with globus.
09/13/04 16:22:12 3532 SharedImageViewer     sharedappclient.py:102 ERROR 
SharedAppClient.Join failed: https://141.142.64.5:9000/119
Traceback (most recent call last):
  File "C:\Python23\Lib\site-packages\AccessGrid\SharedAppClient.py", line 97, 
in Join
    (self.__publicId, self.__privateId) = self.__appProxy.Join(clientProfile)
  File "C:\Python23\Lib\site-packages\AccessGrid\SharedApplication.py", line 
553, in Join
    return self.proxy.Join(clientProfile)
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\SOAPpy\Client.py",
 line 453, in __call__
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\SOAPpy\Client.py",
 line 475, in __r_call
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\SOAPpy\Client.py",
 line 389, in __call
faultType: <Fault exceptions.TypeError: TypeError: Join() takes exactly 1 
argument (2 given): Traceback (most recent call last):
  File "/usr/lib/python2.2/site-packages/AccessGrid/hosting/AccessControl.py", 
line 583, in __call__
    rc = self.callback(*args)
TypeError: Join() takes exactly 1 argument (2 given)
>
09/13/04 16:22:13 3532 SharedImageViewer     sharedappclient.py:108 INFO  
SharedAppClient.Join: https://141.142.64.5:9000/119 using old software
09/13/04 16:22:13 3532 EventClient     eventclient.py:158 DEBUG Have callback 
handle _c866a101_p_callbackStruct
09/13/04 16:22:13 3532 DataStoreClient     datastoreclient.py:40 INFO  
Connecting to venue https://venues.ncsa.uiuc.edu:9000/Venues/default, to get 
datastore information.
09/13/04 16:22:15 3532 SharedImageViewer     sharedimageviewer.py:250 INFO  
SharedAppViewer: no image in venue
09/13/04 16:22:16 3532 SharedImageViewer     sharedimageviewer.py:261 INFO  
SharedAppViewer: no markup in venue
09/13/04 16:22:43 3532 DataStoreClient     datastoreclient.py:307 DEBUG Upload 
C:\Documents and Settings\semeraro\My Documents\My 
Pictures\073104_satellite.jpg to 
https://141.142.64.5:9006/000000f797870a7a008d008e00420092fa9
09/13/04 16:22:43 3532 DataStore     datastore.py:1842 DEBUG Upload: check files
09/13/04 16:22:43 3532 DataStore     datastore.py:1850 DEBUG Upload: create 
manifest
09/13/04 16:22:43 3532 DataStore     datastore.py:2081 DEBUG Checksum 
C:\Documents and Settings\semeraro\My Documents\My Pictures\073104_satellite.jpg
09/13/04 16:22:43 3532 DataStore     datastore.py:1853 DEBUG Upload: Created 
manifest
09/13/04 16:22:43 3532 DataStore     datastore.py:1860 DEBUG upload mainfest: 
host='141.142.64.5:9006' base_path='/000000f797870a7a008d008e00420092fa9'
09/13/04 16:22:43 3532 DataStore     datastore.py:1992 DEBUG post returns 
<httplib.HTTPResponse instance at 0x01D915F8>
09/13/04 16:22:43 3532 DataStore     datastore.py:2000 DEBUG Reading response, 
headers are ['Server: BaseHTTP/0.2 Python/2.2.2\r\n', 'Date: Mon, 13 Sep 2004 
21:22:44 GMT\r\n', 'Content-type: text/plain\r\n', 'Content-length: 72\r\n']
09/13/04 16:22:43 3532 DataStore     datastore.py:2008 DEBUG got tline 
<return_code: 1>
09/13/04 16:22:43 3532 DataStore     datastore.py:2008 DEBUG got tline 
<error_reason: Upload error for file 073104_satellite.jpg>
09/13/04 16:22:43 3532 DataStore     datastore.py:2008 DEBUG got tline <>
09/13/04 16:22:43 3532 DataStore     datastore.py:2029 DEBUG Upload failed:
09/13/04 16:22:43 3532 DataStore     datastore.py:2031 DEBUG    Upload error 
for file 073104_satellite.jpg
09/13/04 16:22:43 3532 DataStore     datastore.py:1884 ERROR Upload failed.
Traceback (most recent call last):
  File "C:\Python23\Lib\site-packages\AccessGrid\DataStore.py", line 1870, in 
UploadFiles
    transfer_key = self.uploadManifest(conn, base_path, manifest)
  File "C:\Python23\Lib\site-packages\AccessGrid\DataStore.py", line 2032, in 
uploadManifest
    raise UploadFailed((return_code, error_reasons))
UploadFailed: (1, ['Upload error for file 073104_satellite.jpg'])
09/13/04 16:23:08 3220 Toolkit     config.py:196 DEBUG Using 
GLOBUS_HOSTNAME=zim.ncsa.uiuc.edu as set in the environment
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:257 DEBUG 
Opened repository C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\Config\certRepo
09/13/04 16:23:08 3220 Toolkit     toolkit.py:395 DEBUG Got repo.
09/13/04 16:23:08 3220 Toolkit     toolkit.py:397 DEBUG looking in system ca 
dir: C:\Program Files\AGTk-2.3\Config\CAcertificates
09/13/04 16:23:08 3220 Toolkit     toolkit.py:401 DEBUG Getting cert: 1c3f2ca8.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\1c3f2ca8.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:401 DEBUG Getting cert: 45cc9e80.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\45cc9e80.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:401 DEBUG Getting cert: d1b603c3.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\d1b603c3.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:401 DEBUG Getting cert: f18fa857.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\f18fa857.0
09/13/04 16:23:08 3220 Toolkit     toolkit.py:410 DEBUG Init'ing globus.
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:734 DEBUG 
Configuring standard environment
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:802 DEBUG 
Using default identity /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:873 DEBUG 
Initializing environment with proxy cert for /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:907 DEBUG 
Looking for identity (unused) None
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:892 DEBUG 
Configuring for user proxy issued from /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:895 DEBUG 
Proxy C:\DOCUME~1\semeraro\LOCALS~1\Temp\proxy will expire 09/13/04 16:58:25
09/13/04 16:23:08 3220 CertificateManager     certificatemanager.py:1479 DEBUG 
done, success=1
09/13/04 16:23:08 3220 Toolkit     toolkit.py:414 DEBUG Done with globus.
09/13/04 16:23:09 3220 SharedImageViewer     sharedappclient.py:102 ERROR 
SharedAppClient.Join failed: https://141.142.64.5:9000/119
Traceback (most recent call last):
  File "C:\Python23\Lib\site-packages\AccessGrid\SharedAppClient.py", line 97, 
in Join
    (self.__publicId, self.__privateId) = self.__appProxy.Join(clientProfile)
  File "C:\Python23\Lib\site-packages\AccessGrid\SharedApplication.py", line 
553, in Join
    return self.proxy.Join(clientProfile)
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\SOAPpy\Client.py",
 line 453, in __call__
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\SOAPpy\Client.py",
 line 475, in __r_call
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\SOAPpy\Client.py",
 line 389, in __call
faultType: <Fault exceptions.TypeError: TypeError: Join() takes exactly 1 
argument (2 given): Traceback (most recent call last):
  File "/usr/lib/python2.2/site-packages/AccessGrid/hosting/AccessControl.py", 
line 583, in __call__
    rc = self.callback(*args)
TypeError: Join() takes exactly 1 argument (2 given)
>
09/13/04 16:23:10 3220 SharedImageViewer     sharedappclient.py:108 INFO  
SharedAppClient.Join: https://141.142.64.5:9000/119 using old software
09/13/04 16:23:12 3220 EventClient     eventclient.py:158 DEBUG Have callback 
handle _e807a101_p_callbackStruct
09/13/04 16:23:12 3220 DataStoreClient     datastoreclient.py:40 INFO  
Connecting to venue https://venues.ncsa.uiuc.edu:9000/Venues/default, to get 
datastore information.
09/13/04 16:23:14 3220 SharedImageViewer     sharedimageviewer.py:250 INFO  
SharedAppViewer: no image in venue
09/13/04 16:23:14 3220 SharedImageViewer     sharedimageviewer.py:261 INFO  
SharedAppViewer: no markup in venue
09/13/04 16:23:30 3220 DataStoreClient     datastoreclient.py:307 DEBUG Upload 
C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\SharedApplications\Shared_Image_Viewer\073104_satellite.jpg to 
https://141.142.64.5:9006/000000f797870a7a008d008e00420092fa9
09/13/04 16:23:30 3220 DataStore     datastore.py:1842 DEBUG Upload: check files
09/13/04 16:23:30 3220 DataStore     datastore.py:1850 DEBUG Upload: create 
manifest
09/13/04 16:23:30 3220 DataStore     datastore.py:2081 DEBUG Checksum 
C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\SharedApplications\Shared_Image_Viewer\073104_satellite.jpg
09/13/04 16:23:30 3220 DataStore     datastore.py:1853 DEBUG Upload: Created 
manifest
09/13/04 16:23:30 3220 DataStore     datastore.py:1860 DEBUG upload mainfest: 
host='141.142.64.5:9006' base_path='/000000f797870a7a008d008e00420092fa9'
09/13/04 16:23:31 3220 DataStore     datastore.py:1992 DEBUG post returns 
<httplib.HTTPResponse instance at 0x01DAA1E8>
09/13/04 16:23:31 3220 DataStore     datastore.py:2000 DEBUG Reading response, 
headers are ['Server: BaseHTTP/0.2 Python/2.2.2\r\n', 'Date: Mon, 13 Sep 2004 
21:23:32 GMT\r\n', 'Content-type: text/plain\r\n', 'Content-length: 72\r\n']
09/13/04 16:23:31 3220 DataStore     datastore.py:2008 DEBUG got tline 
<return_code: 1>
09/13/04 16:23:31 3220 DataStore     datastore.py:2008 DEBUG got tline 
<error_reason: Upload error for file 073104_satellite.jpg>
09/13/04 16:23:31 3220 DataStore     datastore.py:2008 DEBUG got tline <>
09/13/04 16:23:31 3220 DataStore     datastore.py:2029 DEBUG Upload failed:
09/13/04 16:23:31 3220 DataStore     datastore.py:2031 DEBUG    Upload error 
for file 073104_satellite.jpg
09/13/04 16:23:31 3220 DataStore     datastore.py:1884 ERROR Upload failed.
Traceback (most recent call last):
  File "C:\Python23\Lib\site-packages\AccessGrid\DataStore.py", line 1870, in 
UploadFiles
    transfer_key = self.uploadManifest(conn, base_path, manifest)
  File "C:\Python23\Lib\site-packages\AccessGrid\DataStore.py", line 2032, in 
uploadManifest
    raise UploadFailed((return_code, error_reasons))
UploadFailed: (1, ['Upload error for file 073104_satellite.jpg'])
09/13/04 16:23:42 3220 EventClient     eventclient.py:303 DEBUG Cancel pending 
callbacks
09/13/04 16:23:42 2380 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_28f29f01_p_globus_io_handle_t result=(-1, 2, 'an I/O 
operation was cancelled')  n=0 

09/13/04 16:23:42 2380 EventClient     eventclient.py:180 DEBUG readCallback 
gets failure in result: -1 2
09/13/04 16:23:42 3220 EventClient     eventclient.py:309 DEBUG Free callback 
_e807a101_p_callbackStruct
09/13/04 16:23:42 3220 EventClient     eventclient.py:315 DEBUG 
EventClient.Stop: closing socket
09/13/04 16:23:42 3220 EventClient     eventclient.py:323 DEBUG 
EventClient.Stop: closing queue
09/13/04 16:23:48 3532 EventClient     eventclient.py:303 DEBUG Cancel pending 
callbacks
09/13/04 16:23:48 3900 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_c0f39f01_p_globus_io_handle_t result=(-1, 2, 'an I/O 
operation was cancelled')  n=0 

09/13/04 16:23:48 3900 EventClient     eventclient.py:180 DEBUG readCallback 
gets failure in result: -1 2
09/13/04 16:23:48 3532 EventClient     eventclient.py:309 DEBUG Free callback 
_c866a101_p_callbackStruct
09/13/04 16:23:48 3532 EventClient     eventclient.py:315 DEBUG 
EventClient.Stop: closing socket
09/13/04 16:23:48 3532 EventClient     eventclient.py:323 DEBUG 
EventClient.Stop: closing queue
09/13/04 16:19:56 3656 Toolkit     config.py:196 DEBUG Using 
GLOBUS_HOSTNAME=zim.ncsa.uiuc.edu as set in the environment
09/13/04 16:19:56 3656 CertificateManager     certificatemanager.py:257 DEBUG 
Opened repository C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\Config\certRepo
09/13/04 16:19:56 3656 Toolkit     toolkit.py:395 DEBUG Got repo.
09/13/04 16:19:56 3656 Toolkit     toolkit.py:397 DEBUG looking in system ca 
dir: C:\Program Files\AGTk-2.3\Config\CAcertificates
09/13/04 16:19:56 3656 Toolkit     toolkit.py:401 DEBUG Getting cert: 1c3f2ca8.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\1c3f2ca8.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:401 DEBUG Getting cert: 45cc9e80.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\45cc9e80.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:401 DEBUG Getting cert: d1b603c3.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\d1b603c3.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:401 DEBUG Getting cert: f18fa857.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:406 WARNING Not importing cert 
C:\Program Files\AGTk-2.3\Config\CAcertificates\f18fa857.0
09/13/04 16:19:56 3656 Toolkit     toolkit.py:410 DEBUG Init'ing globus.
09/13/04 16:19:57 3656 CertificateManager     certificatemanager.py:734 DEBUG 
Configuring standard environment
09/13/04 16:19:57 3656 CertificateManager     certificatemanager.py:802 DEBUG 
Using default identity /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:19:57 3656 CertificateManager     certificatemanager.py:873 DEBUG 
Initializing environment with proxy cert for /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:19:57 3656 CertificateManager     certificatemanager.py:907 DEBUG 
Looking for identity (unused) None
09/13/04 16:19:57 3656 CertificateManager     certificatemanager.py:892 DEBUG 
Configuring for user proxy issued from /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro
09/13/04 16:19:57 3656 CertificateManager     certificatemanager.py:895 DEBUG 
Proxy C:\DOCUME~1\semeraro\LOCALS~1\Temp\proxy will expire 09/13/04 16:58:25
09/13/04 16:19:57 3656 Toolkit     toolkit.py:414 DEBUG Done with globus.
09/13/04 16:19:57 3656 VenueClient     venueclient.py:284 DEBUG 
__StartWebService: venueclient: https://zim.ncsa.uiuc.edu:11000/VenueClient
09/13/04 16:19:57 3656 ServiceManager     agservicemanager.py:75 INFO  Using 
services dir: C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\local_services
09/13/04 16:19:57 3656 ServiceManager     agservicemanager.py:414 INFO  
__DiscoverResources
09/13/04 16:19:57 3656 Toolkit     config.py:997 INFO  Using vfwscan to get 
devices
09/13/04 16:19:57 3656 Toolkit     config.py:998 DEBUG vfwscanexe = 
C:\PROGRA~1\AGTk-2.3\bin\vfwscan.exe
09/13/04 16:19:57 3656 Toolkit     config.py:1003 DEBUG filelines = ['Microsoft 
WDM Image Capture (Win32)\n']
09/13/04 16:19:57 3656 Toolkit     config.py:1031 INFO  GetResources: 
['Microsoft WDM Image Capture (Win32)']
09/13/04 16:19:57 3656 VenueClient     venueclient.py:293 DEBUG 
__StartWebService: service manager: 
https://zim.ncsa.uiuc.edu:11000/ServiceManager
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:733 INFO  
NodeService.__ReadConfigFile
09/13/04 16:19:57 3656 Toolkit     toolkit.py:328 DEBUG Looking for: 
C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\Config\AGNodeService.cfg
09/13/04 16:19:57 3656 Toolkit     toolkit.py:333 DEBUG Looking for: C:\Program 
Files\AGTk-2.3\Config\AGNodeService.cfg
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:741 DEBUG DEFAULT NODE 
SERVICE CONFIG: C:\Program Files\AGTk-2.3\Config\AGNodeService.cfg
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:745 INFO  Reading node 
service config file: C:\Program Files\AGTk-2.3\Config\AGNodeService.cfg
09/13/04 16:19:57 3656 VenueClient     venueclient.py:299 DEBUG 
__StartWebService: node service: https://zim.ncsa.uiuc.edu:11000/NodeService
09/13/04 16:19:57 3656 VenueClient     venueclient.py:1317 DEBUG SerNodeUrl: 
Set node service url:  https://zim.ncsa.uiuc.edu:11000/NodeService
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:675 INFO  
NodeService.GetDefaultConfiguration
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:558 INFO  Migration 
unnecessary
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:351 INFO  
NodeService.LoadDefaultConfig
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:355 INFO  Loading 
default node configuration: defaultWindows
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:369 INFO  
NodeService.LoadConfiguration
09/13/04 16:19:57 3656 NodeService     agnodeservice.py:384 INFO  Trying to 
load node configuration from: C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\Config\nodeConfig\defaultWindows
09/13/04 16:19:57 2496 ServiceManager     agservicemanager.py:379 INFO  
AGServiceManager.RemoveServices
09/13/04 16:19:58 1832 ServiceManager     agservicemanager.py:115 INFO  
AGServiceManager.AddService
09/13/04 16:19:58 1832 ServiceManager     agservicemanager.py:118 INFO  
AddService: AudioService v 2.400000 u AudioService.zip
09/13/04 16:19:58 1832 ServiceManager     agservicemanager.py:123 INFO  
resourceToAssign: None
09/13/04 16:19:58 1832 ServiceManager     agservicemanager.py:186 INFO  
Retaining version 2.400000
09/13/04 16:19:58 1832 ServiceManager     agservicemanager.py:189 INFO  
Extracting service package to C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\local_services\AudioService
09/13/04 16:19:58 1832 ServiceManager     agservicemanager.py:231 INFO  Running 
Service; options: C:\Python23\python.exe [u'C:\\Documents and 
Settings\\semeraro\\Application 
Data\\AccessGrid\\local_services\\AudioService\\AudioService.py', 61136]
09/13/04 16:19:58 1832 ProcessManager     processmanager.py:59 DEBUG Creating 
process: C:\Python23\python.exe "C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\local_services\AudioService\AudioService.py" 61136
09/13/04 16:19:58 1832 ProcessManager     processmanager.py:72 DEBUG Create 
process returns: (<PyHANDLE object at 0x008DEB04>, <PyHANDLE object at 
0x01BE13B4>, 2720, 1588)
09/13/04 16:19:58 1832 ServiceManager     agservicemanager.py:248 DEBUG Waiting 
for service to start: AudioService https://zim.ncsa.uiuc.edu:61136/Service
09/13/04 16:20:00 1832 ServiceManager     agservicemanager.py:255 INFO  Service 
AudioService successfully started
09/13/04 16:20:00 1832 ServiceManager     agservicemanager.py:290 DEBUG Not 
setting service configuration; none given
09/13/04 16:20:00 1832 ServiceManager     agservicemanager.py:299 DEBUG Not 
assigning resource; none given
09/13/04 16:20:01 3656 NodeService     agnodeservice.py:492 INFO  Not setting 
identity for service AudioService; no profile
09/13/04 16:20:01 3708 ServiceManager     agservicemanager.py:115 INFO  
AGServiceManager.AddService
09/13/04 16:20:01 3708 ServiceManager     agservicemanager.py:118 INFO  
AddService: VideoConsumerService v 2.300000 u VideoConsumerService.zip
09/13/04 16:20:01 3708 ServiceManager     agservicemanager.py:123 INFO  
resourceToAssign: None
09/13/04 16:20:01 3708 ServiceManager     agservicemanager.py:186 INFO  
Retaining version 2.300000
09/13/04 16:20:01 3708 ServiceManager     agservicemanager.py:189 INFO  
Extracting service package to C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\local_services\VideoConsumerService
09/13/04 16:20:01 3708 ServiceManager     agservicemanager.py:231 INFO  Running 
Service; options: C:\Python23\python.exe [u'C:\\Documents and 
Settings\\semeraro\\Application 
Data\\AccessGrid\\local_services\\VideoConsumerService\\VideoConsumerService.py',
 49846]
09/13/04 16:20:01 3708 ProcessManager     processmanager.py:59 DEBUG Creating 
process: C:\Python23\python.exe "C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\local_services\VideoConsumerService\VideoConsumerService.py" 
49846
09/13/04 16:20:01 3708 ProcessManager     processmanager.py:72 DEBUG Create 
process returns: (<PyHANDLE object at 0x01F476D4>, <PyHANDLE object at 
0x01F48914>, 1412, 3576)
09/13/04 16:20:01 3708 ServiceManager     agservicemanager.py:248 DEBUG Waiting 
for service to start: VideoConsumerService 
https://zim.ncsa.uiuc.edu:49846/Service
09/13/04 16:20:03 3708 ServiceManager     agservicemanager.py:255 INFO  Service 
VideoConsumerService successfully started
09/13/04 16:20:03 3708 ServiceManager     agservicemanager.py:290 DEBUG Not 
setting service configuration; none given
09/13/04 16:20:03 3708 ServiceManager     agservicemanager.py:299 DEBUG Not 
assigning resource; none given
09/13/04 16:20:04 3656 NodeService     agnodeservice.py:492 INFO  Not setting 
identity for service VideoConsumerService; no profile
09/13/04 16:20:04 3656 VenueClient     venueclient.py:182 DEBUG 
__createPersonalDataStore: Creating personal datastore at C:\Documents and 
Settings\semeraro\Application Data\AccessGrid\Config\personalDataStore using 
prefix personalDataStore and port 0
09/13/04 16:20:04 3656 DataStore     datastore.py:1500 DEBUG Creating thread 0
09/13/04 16:20:04 3656 DataStore     datastore.py:1505 DEBUG Starting thread 0
09/13/04 16:20:04 1144 DataStore     datastore.py:1513 DEBUG Worker 0 starting
09/13/04 16:20:04 3656 DataStore     datastore.py:1507 DEBUG Waiting thread 0
09/13/04 16:20:04 3656 DataStore     datastore.py:1510 DEBUG Done creating 
workers
09/13/04 16:20:04 3656 DataStore     datastore.py:263 DEBUG Reading persisted 
data from: C:\Documents and Settings\semeraro\Application 
Data\AccessGrid\Config\personalDataStore\DataStore.dat
09/13/04 16:20:04 3656 VenueClient     venueclient.py:207 DEBUG 
__createPersonalDataStore: Load personal data from file
09/13/04 16:20:11 3656 VenueClient     venueclient.py:803 DEBUG EnterVenue; 
url=https://venues.ncsa.uiuc.edu:9000/Venues/default
09/13/04 16:20:11 3656 CertificateManager     certificatemanager.py:907 DEBUG 
Looking for identity (unused) None
09/13/04 16:20:11 3656 CertificateManager     certificatemanager.py:638 DEBUG 
HaveValidProxy: found proxy ident /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro/CN=proxy
09/13/04 16:20:11 3656 CertificateManager     certificatemanager.py:907 DEBUG 
Looking for identity (unused) None
09/13/04 16:20:11 3656 CertificateManager     certificatemanager.py:638 DEBUG 
HaveValidProxy: found proxy ident /O=Access 
Grid/OU=agdev-ca.mcs.anl.gov/OU=ncsa.uiuc.edu/CN=Dave Semeraro/CN=proxy
09/13/04 16:20:11 256 NodeService     agnodeservice.py:692 INFO  
NodeService.GetCapabilities
09/13/04 16:20:11 256 NodeService     agnodeservice.py:233 INFO  
NodeService.GetServices
09/13/04 16:20:12 2144 ServiceManager     agservicemanager.py:389 INFO  
AGServiceManager.GetServices
09/13/04 16:20:12 3656 VenueClient     venueclient.py:702 DEBUG EnterVenue: 
Invoke venue enter
09/13/04 16:20:14 3656 EventClient     eventclient.py:158 DEBUG Have callback 
handle _10e28301_p_callbackStruct
09/13/04 16:20:16 3656 TextConnection     textclient.py:145 DEBUG 
TextConnection: register returns _b8b98101_p_callbackStruct
09/13/04 16:20:16 3656 TextConnection     textclient.py:147 DEBUG 
        host:141.142.64.5
        port:9004
        attr:<pyGlobus.io.TCPIOAttr instance at 0x01F08800>
09/13/04 16:20:16 3656 TextConnection     textclient.py:149 DEBUG 
        socket:<pyGlobus.io.GSITCPSocket instance at 0x01F086C0>
09/13/04 16:20:16 3656 TextConnection     textclient.py:164 DEBUG 
TextConnection.Write: EVENT --- Input
09/13/04 16:20:16 3656 TextConnection     textclient.py:165 DEBUG 
TextConnection.Write: Event:
        Type: Connect   Venue: 000000f797870a7a008d008e00420092fa9
09/13/04 16:20:16 3656 VenueClient     venueclient.py:781 DEBUG Setting 
isInVenue flag.
09/13/04 16:20:16 3656 VenueClient     venueclient.py:996 DEBUG 
UpdateNodeService: Method UpdateNodeService called
09/13/04 16:20:16 1020 NodeService     agnodeservice.py:711 INFO  
NodeService.SetIdentity Dave Semeraro semer...@ncsa.uiuc.edu
09/13/04 16:20:16 1020 NodeService     agnodeservice.py:233 INFO  
NodeService.GetServices
09/13/04 16:20:17 1944 ServiceManager     agservicemanager.py:389 INFO  
AGServiceManager.GetServices
09/13/04 16:20:18 3656 VenueClient     venueclient.py:1043 DEBUG UpdateStream: 
Setting stream 000000fef907bb8b008d008e0040000505a to multicast
09/13/04 16:20:18 3656 VenueClient     venueclient.py:1043 DEBUG UpdateStream: 
Setting stream 000000fef9994266008d008e004000054ef to multicast
09/13/04 16:20:18 252 NodeService     agnodeservice.py:302 INFO  
NodeService.SetStreams
09/13/04 16:20:18 252 NodeService     agnodeservice.py:233 INFO  
NodeService.GetServices
09/13/04 16:20:18 3756 ServiceManager     agservicemanager.py:389 INFO  
AGServiceManager.GetServices
09/13/04 16:20:18 252 NodeService     agnodeservice.py:782 INFO  
NodeService.__SendStreamsToService
09/13/04 16:20:19 252 NodeService     agnodeservice.py:792 INFO  Sending stream 
(type=audio) to service: https://zim.ncsa.uiuc.edu:61136/Service
09/13/04 16:20:20 252 NodeService     agnodeservice.py:782 INFO  
NodeService.__SendStreamsToService
09/13/04 16:20:21 252 NodeService     agnodeservice.py:792 INFO  Sending stream 
(type=video) to service: https://zim.ncsa.uiuc.edu:49846/Service
09/13/04 16:20:21 3656 VenueClient     venueclient.py:837 DEBUG Updating client 
profile cache.
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:1959 DEBUG 
bin.VenueClient::EnterVenue: Enter venue with url: 
https://venues.ncsa.uiuc.edu:9000/Venues/default
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2067 DEBUG Entered venue
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2647 DEBUG 
ContentListPanel.AddParticipant:: AddParticipant UCSB College of Engineering 
(called from ('C:\\Python23\\Lib\\site-packages\\wx\\core.py', 9397, 
'<lambda>', 'lambda event: event.callable(*event.args, **event.kw) )'))
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2647 DEBUG 
ContentListPanel.AddParticipant:: AddParticipant Dave Semeraro (called from 
('C:\\Python23\\Lib\\site-packages\\wx\\core.py', 9397, '<lambda>', 'lambda 
event: event.callable(*event.args, **event.kw) )'))
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2714 DEBUG 
ContentListPanel.AddData: profile.type = None
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2718 DEBUG 
ContentListPanel.AddData: This is venue data
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2714 DEBUG 
ContentListPanel.AddData: profile.type = None
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2718 DEBUG 
ContentListPanel.AddData: This is venue data
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2714 DEBUG 
ContentListPanel.AddData: profile.type = None
09/13/04 16:20:21 3656 VenueClient     venueclientui.py:2718 DEBUG 
ContentListPanel.AddData: This is venue data
09/13/04 16:20:36 3656 VenueClientController     venueclientcontroller.py:557 
DEBUG VenueClientFrame.StartApp: Creating application: Shared Image Viewer
09/13/04 16:20:37 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(0, None, None)  
n=4 

09/13/04 16:20:37 992 EventClient     eventclient.py:229 DEBUG Freeing callback 
_10e28301_p_callbackStruct within callback
09/13/04 16:20:37 992 EventClient     eventclient.py:238 DEBUG Have new 
callback handle _10e28301_p_callbackStruct
09/13/04 16:20:37 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(0, None, None)  
n=522 

09/13/04 16:20:37 992 EventClient     eventclient.py:218 DEBUG finally read 
enough data, wait=522 buflen=522
09/13/04 16:20:37 992 EventClient     eventclient.py:253 DEBUG Invoking 
callback <bound method VenueClient.AddApplicationEvent of 
<AccessGrid.VenueClient.VenueClient instance at 0x01EDD1C0>>...
09/13/04 16:20:37 2476 VenueClient     venueclient.py:550 DEBUG 
AddApplicationEvent: Got Add Application Event
09/13/04 16:20:37 2476 VenueClient     venueclientui.py:1833 DEBUG EVENT - Add 
application: Shared Image Viewer - 04:20:36 PM September 13, 2004, Mime Type: 
application/x-ag-shared-image-viewer
09/13/04 16:20:37 992 EventClient     eventclient.py:259 DEBUG Invoking 
callback <bound method VenueClient.AddApplicationEvent of 
<AccessGrid.VenueClient.VenueClient instance at 0x01EDD1C0>>...done
09/13/04 16:20:37 992 EventClient     eventclient.py:261 INFO  No callback for 
Add application!
09/13/04 16:20:37 992 EventClient     eventclient.py:329 INFO  Got callback for 
Add application event!
09/13/04 16:20:37 992 EventClient     eventclient.py:224 DEBUG handleData 
returns
09/13/04 16:20:37 992 EventClient     eventclient.py:229 DEBUG Freeing callback 
_10e28301_p_callbackStruct within callback
09/13/04 16:20:37 992 EventClient     eventclient.py:238 DEBUG Have new 
callback handle _10e28301_p_callbackStruct
09/13/04 16:20:39 3656 VenueClient     venueclientui.py:3210 INFO  Got 
commands: (application/x-ag-shared-image-viewer) {'Open': 
'C:\\Python23\\python.exe SharedImageViewer.py -d -a %(appUrl)s -v 
%(venueUrl)s'}
09/13/04 16:22:04 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(0, None, None)  
n=4 

09/13/04 16:22:04 992 EventClient     eventclient.py:229 DEBUG Freeing callback 
_10e28301_p_callbackStruct within callback
09/13/04 16:22:04 992 EventClient     eventclient.py:238 DEBUG Have new 
callback handle _18318301_p_callbackStruct
09/13/04 16:22:04 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(0, None, None)  
n=4096 

09/13/04 16:22:04 992 EventClient     eventclient.py:229 DEBUG Freeing callback 
_18318301_p_callbackStruct within callback
09/13/04 16:22:04 992 EventClient     eventclient.py:238 DEBUG Have new 
callback handle _18318301_p_callbackStruct
09/13/04 16:22:04 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(0, None, None)  
n=505 

09/13/04 16:22:04 992 EventClient     eventclient.py:218 DEBUG finally read 
enough data, wait=4601 buflen=4601
09/13/04 16:22:04 992 EventClient     eventclient.py:269 WARNING handleData 
unable to import pyGlobus.AGGSISOAP
09/13/04 16:22:04 992 EventClient     eventclient.py:224 DEBUG handleData 
returns
09/13/04 16:22:04 992 EventClient     eventclient.py:229 DEBUG Freeing callback 
_18318301_p_callbackStruct within callback
09/13/04 16:22:04 992 EventClient     eventclient.py:238 DEBUG Have new 
callback handle _18318301_p_callbackStruct
09/13/04 16:23:04 3656 VenueClient     venueclientui.py:3210 INFO  Got 
commands: (application/x-ag-shared-image-viewer) {'Open': 
'C:\\Python23\\python.exe SharedImageViewer.py -d -a %(appUrl)s -v 
%(venueUrl)s'}
09/13/04 16:23:05 3656 VenueClientController     venueclientcontroller.py:1189 
INFO  StartCmd starting command: C:\Python23\python.exe SharedImageViewer.py -d 
-a https://141.142.64.5:9000/119 -v 
https://venues.ncsa.uiuc.edu:9000/Venues/default
09/13/04 16:23:05 3656 ProcessManager     processmanager.py:59 DEBUG Creating 
process: C:\Python23\python.exe SharedImageViewer.py -d -a 
https://141.142.64.5:9000/119 -v 
https://venues.ncsa.uiuc.edu:9000/Venues/default
09/13/04 16:23:06 3656 ProcessManager     processmanager.py:72 DEBUG Create 
process returns: (<PyHANDLE object at 0x01F4AA0C>, <PyHANDLE object at 
0x01F721BC>, 3236, 3220)
09/13/04 16:28:08 3656 VenueClient     venueclientui.py:3210 INFO  Got 
commands: (application/x-ag-shared-image-viewer) {'Open': 
'C:\\Python23\\python.exe SharedImageViewer.py -d -a %(appUrl)s -v 
%(venueUrl)s'}
09/13/04 16:28:12 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(0, None, None)  
n=4 

09/13/04 16:28:12 992 EventClient     eventclient.py:229 DEBUG Freeing callback 
_18318301_p_callbackStruct within callback
09/13/04 16:28:12 992 EventClient     eventclient.py:238 DEBUG Have new 
callback handle _18318301_p_callbackStruct
09/13/04 16:28:12 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(0, None, None)  
n=525 

09/13/04 16:28:12 992 EventClient     eventclient.py:218 DEBUG finally read 
enough data, wait=525 buflen=525
09/13/04 16:28:12 992 EventClient     eventclient.py:253 DEBUG Invoking 
callback <bound method VenueClient.RemoveApplicationEvent of 
<AccessGrid.VenueClient.VenueClient instance at 0x01EDD1C0>>...
09/13/04 16:28:12 2476 VenueClient     venueclient.py:565 DEBUG 
RemoveApplicationEvent: Got Remove Application Event
09/13/04 16:28:12 2476 VenueClient     venueclientui.py:1849 DEBUG EVENT - 
Remove application: Shared Image Viewer - 04:20:36 PM September 13, 2004
09/13/04 16:28:12 992 EventClient     eventclient.py:259 DEBUG Invoking 
callback <bound method VenueClient.RemoveApplicationEvent of 
<AccessGrid.VenueClient.VenueClient instance at 0x01EDD1C0>>...done
09/13/04 16:28:12 992 EventClient     eventclient.py:261 INFO  No callback for 
Remove application!
09/13/04 16:28:12 992 EventClient     eventclient.py:329 INFO  Got callback for 
Remove application event!
09/13/04 16:28:12 992 EventClient     eventclient.py:224 DEBUG handleData 
returns
09/13/04 16:28:12 992 EventClient     eventclient.py:229 DEBUG Freeing callback 
_18318301_p_callbackStruct within callback
09/13/04 16:28:12 992 EventClient     eventclient.py:238 DEBUG Have new 
callback handle _18318301_p_callbackStruct
09/13/04 16:28:14 3656 VenueClient     venueclientui.py:1599 INFO  --------- 
END VenueClient
09/13/04 16:28:14 3656 VenueClient     venueclient.py:935 INFO  ExitVenue
09/13/04 16:28:14 3656 ProcessManager     processmanager.py:135 ERROR couldn't 
shutdown process <PyHANDLE:1116>: (1444, 'PostThreadMessage', 'Invalid thread 
identifier.')
Traceback (most recent call last):
  File 
"C:\Python23\Lib\site-packages\AccessGrid\Platform\win32\ProcessManager.py", 
line 128, in TerminateProcess
    win32api.PostThreadMessage(self.threadid[pid], 18, 0, 0)
error: (1444, 'PostThreadMessage', 'Invalid thread identifier.')
09/13/04 16:28:14 3656 ProcessManager     processmanager.py:142 ERROR couldn't 
terminate process <PyHANDLE:1116>: (5, 'TerminateProcess', 'Access is denied.')
Traceback (most recent call last):
  File 
"C:\Python23\Lib\site-packages\AccessGrid\Platform\win32\ProcessManager.py", 
line 139, in TerminateProcess
    win32process.TerminateProcess(pid, 0)
error: (5, 'TerminateProcess', 'Access is denied.')
09/13/04 16:28:14 3656 VenueClient     venueclient.py:978 INFO  ExitVenue: 
Stopping node services
09/13/04 16:28:15 908 NodeService     agnodeservice.py:278 INFO  
NodeService.StopServices
09/13/04 16:28:15 3496 ServiceManager     agservicemanager.py:399 INFO  
AGServiceManager.StopServices
09/13/04 16:28:17 3336 NodeService     agnodeservice.py:302 INFO  
NodeService.SetStreams
09/13/04 16:28:17 3336 NodeService     agnodeservice.py:233 INFO  
NodeService.GetServices
09/13/04 16:28:18 3792 ServiceManager     agservicemanager.py:389 INFO  
AGServiceManager.GetServices
09/13/04 16:28:18 3336 NodeService     agnodeservice.py:782 INFO  
NodeService.__SendStreamsToService
09/13/04 16:28:18 3336 NodeService     agnodeservice.py:782 INFO  
NodeService.__SendStreamsToService
09/13/04 16:28:19 3656 VenueClient     venueclient.py:892 INFO  ExitVenue: 
Stopping heartbeats
09/13/04 16:28:20 992 EventClient     eventclient.py:177 DEBUG Read Callback 
called arg=None handle=_a8fb8001_p_globus_io_handle_t result=(-1, 36, 'an 
end-of-file was reached')  n=0 

09/13/04 16:28:20 992 EventClient     eventclient.py:180 DEBUG readCallback 
gets failure in result: -1 36
09/13/04 16:28:20 3656 VenueClient     venueclient.py:903 DEBUG ExitVenue: Stop 
event client obj
09/13/04 16:28:20 3656 EventClient     eventclient.py:303 DEBUG Cancel pending 
callbacks
09/13/04 16:28:20 3656 EventClient     eventclient.py:309 DEBUG Free callback 
_18318301_p_callbackStruct
09/13/04 16:28:20 3656 EventClient     eventclient.py:315 DEBUG 
EventClient.Stop: closing socket
09/13/04 16:28:20 3656 EventClient     eventclient.py:323 DEBUG 
EventClient.Stop: closing queue
09/13/04 16:28:20 3656 VenueClient     venueclient.py:905 DEBUG ExitVenue: 
Remove event client reference
09/13/04 16:28:20 3656 VenueClient     venueclient.py:910 INFO  ExitVenue: 
Stopping text client
09/13/04 16:28:20 3656 VenueClient     venueclient.py:914 DEBUG ExitVenue: 
Sending client disconnect event.
09/13/04 16:28:21 3656 TextConnection     textclient.py:164 DEBUG 
TextConnection.Write: EVENT --- Input
09/13/04 16:28:21 3656 TextConnection     textclient.py:165 DEBUG 
TextConnection.Write: Event:
        Type: Disconnect        Venue: 000000f797870a7a008d008e00420092fa9
09/13/04 16:28:21 2960 TextConnection     textclient.py:207 DEBUG 
TextConnection: Got read handle=_487d8601_p_globus_io_handle_t ret=(-1, 44, 'an 
I/O operation was cancelled')  n=0 

09/13/04 16:28:21 2960 TextConnection     textclient.py:210 DEBUG 
TextConnection: asynch read gets n=0, EOF
09/13/04 16:28:21 3656 TextConnection     textclient.py:154 DEBUG 
TextClient.Stop
09/13/04 16:28:21 3656 VenueClient     venueclient.py:917 DEBUG ExitVenue: 
Remove text client reference
09/13/04 16:28:21 3656 DataStore     datastore.py:1577 DEBUG Quitting thread 0
09/13/04 16:28:21 1144 DataStore     datastore.py:1518 DEBUG Worker 0 gets cmd 
quit
09/13/04 16:28:21 1144 DataStore     datastore.py:1531 DEBUG Worker 0 exiting
09/13/04 16:28:21 2932 DataStore     datastore.py:1590 INFO  
GSIHTTPTransferServer: GSITCPSocket, interrupted I/O operation, most likely 
shutting down. 
09/13/04 16:28:21 3656 NodeService     agnodeservice.py:113 INFO  
NodeService.Stop
09/13/04 16:28:21 3656 ServiceManager     agservicemanager.py:84 INFO  
AGServiceManager.Shutdown
09/13/04 16:28:21 3656 ServiceManager     agservicemanager.py:85 INFO  Remove 
services
09/13/04 16:28:21 3656 ServiceManager     agservicemanager.py:379 INFO  
AGServiceManager.RemoveServices
09/13/04 16:28:21 3656 ServiceManager     agservicemanager.py:320 INFO  
AGServiceManager.RemoveService
09/13/04 16:28:21 3656 ServiceManager     agservicemanager.py:320 INFO  
AGServiceManager.RemoveService
09/13/04 16:28:22 3656 ProcessManager     processmanager.py:133 WARNING 
Couldn't terminate process <PyHANDLE:1044> cleanly (258)
09/13/04 16:28:22 3656 ServiceManager     agservicemanager.py:87 INFO  Stop 
network interface
09/13/04 16:28:22 904 Hosting     server.py:65 ERROR Exception in SOAP server 
main loop
Traceback (most recent call last):
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\AccessGrid\hosting\SOAPpy\Server.py",
 line 63, in Run
  File "C:\Python23\lib\SocketServer.py", line 217, in handle_request
    request, client_address = self.get_request()
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\SOAPpy\GSIServer.py",
 line 140, in get_request
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 525, in get_request
    self.socket.listen()
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 857, in listen
    raise ex
GSITCPSocketException: an I/O operation was cancelled
09/13/04 16:28:22 3656 Hosting     server.py:97 ERROR server_close() failed
Traceback (most recent call last):
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\AccessGrid\hosting\SOAPpy\Server.py",
 line 95, in Stop
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 1043, in 
server_close
    self.socket.close()
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 1020, in close
    IOBase.close(self)
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 176, in close
    raise ex
IOBaseException: an uninitialied data structure was passed as argument 1 to 
globus_io_register_close
09/13/04 16:28:22 3656 Hosting     server.py:97 ERROR server_close() failed
Traceback (most recent call last):
  File 
"C:\software\AccessGrid\build\dist-20040910_210059\Lib\site-packages\AccessGrid\hosting\SOAPpy\Server.py",
 line 95, in Stop
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 1043, in 
server_close
    self.socket.close()
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 1020, in close
    IOBase.close(self)
  File "C:\Python23\Lib\site-packages\pyGlobus\io.py", line 176, in close
    raise ex
IOBaseException: an uninitialied data structure was passed as argument 1 to 
globus_io_register_close
"""

A shared image viewer application for the Access Grid.

This application allows the user to view and annotate image data in a
collaborative environment provided by the Access Grid Toolkit. This is
a major revision of the original AGBasicImage application. The
modifications made bring the application into conformance with the
AG2.3 environment. This new version of the application is modeled after
the sharedbrowser.py application distributed with the AG2.3 software.

AG Version - 2.3 

Dave Semeraro
NCSA - UIUC
2004

"""

#       Import the usual suspects
import os
import sys
import logging
import getopt
#       Import the wxPython stuff
import wx
from wx.lib.imagebrowser import *
#       Import the AG stuff
from AccessGrid.SharedAppClient import SharedAppClient
from AccessGrid.Platform.Config import UserConfig
from AccessGrid.ClientProfile import ClientProfile
from AccessGrid import icons
from AccessGrid.Toolkit import WXGUIApplication
from AccessGrid.Toolkit import CmdlineApplication
from AccessGrid.DataStoreClient import GetVenueDataStore
from AccessGrid import Platform
#
#       grab some event ID's
#
ID_OPEN = wx.NewId()
ID_OPEN_VENUE = wx.NewId()
ID_EXIT = wx.NewId()
#
wildcard = "JPEG Files (*.JPG)|*.jpg|"\
           "Gif Files (*.GIF)|*.gif|"\
           "All Files (*.*)|*.*"
#
#class BIFileDropTarget(wxFileDropTarget):
#        def __init__(self,window):
#                wxFileDropTarget.__init__(self)
#                self.window = window
#        def OnDropFiles(self,x,y,filenames):
#                for file in filenames:
#                self.window.wind.LoadImageFromFilename(file)
#                self.window.AG.UploadFile(file)
#                
self.window.AG.PutData(self.window.imagedataname,os.path.split(file)[1])
#                self.window.AG.SendEvent("NewImage",os.path.split(file[1])

class ViewerFrame(wx.Frame):
        menuColours = { 200 : 'Black',
                        201 : 'Yellow',
                        202 : 'Red',
                        203 : 'Green',
                        204 : 'Blue',
                        205 : 'Purple',
                        206 : 'Brown'
                        }
# this doesnt do much but set up the menu. The events are mapped to another
# class
        def __init__(self,parent,ID):
                wx.Frame.__init__(self,parent,ID,"SharedImageViewer: no image 
loaded",size=(800,600),style=wx.DEFAULT_FRAME_STYLE | 
wx.NO_FULL_REPAINT_ON_RESIZE)
                menu = wx.Menu()
                menu.Append(ID_OPEN,"&Open...","Open an image file")
                menu.Append(ID_OPEN_VENUE,"&Open from venue...","Open a venue 
image file")
                menu.AppendSeparator()
                menu.Append(ID_EXIT,"&Exit","Terminate with extreme prejudice")
                colormenu = wx.Menu()
                keys = self.menuColours.keys()
                keys.sort()
                for k in keys:
                       text = self.menuColours[k]
                       colormenu.AppendRadioItem(k,text)
                menubar = wx.MenuBar()
                menubar.Append(menu,"&File")
                menubar.Append(colormenu,"&Colors")
                self.SetMenuBar(menubar)
                
#
#       Define the viewerwindow class here
#
class ViewerWindow(wx.Window):
        def __init__(self,parent,ID):
                
wx.Window.__init__(self,parent,ID,style=wx.NO_FULL_REPAINT_ON_RESIZE)
                self.imagefile = None
                self.parentframe = parent
                self.image = None
                self.lines = []
                self.thickness = 1
                self.SetColour("Black")
                self.SetBackgroundColour("WHITE")
                self.InitBuffer()
                # old way of doing event bindings
                #wx.EVT_IDLE(self,self.OnIdle)
                #wx.EVT_SIZE(self,self.OnSize)
                #wx.EVT_PAINT(self,self.OnPaint)
                #wx.EVT_LEFT_DOWN(self, self.OnLeftDown)
                #wx.EVT_LEFT_UP(self, self.OnLeftUp)
                #wx.EVT_MOTION(self, self.OnMotion)
                #new way
                self.Bind(wx.EVT_IDLE, self.OnIdle)
                self.Bind(wx.EVT_SIZE, self.OnSize)
                self.Bind(wx.EVT_PAINT, self.OnPaint)
                self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
                self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
                self.Bind(wx.EVT_MOTION, self.OnMotion)

        def InitBuffer(self):
                size = self.GetClientSize()
                if self.image == None:
                        self.buffer = wx.EmptyBitmap(size.width,size.height)
                        dc = wx.BufferedDC(None,self.buffer)
                        dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
                        dc.Clear()
                else:
                        self.Refresh(True)
                        self.buffer = self.image.ConvertToBitmap()
                        dc = wx.BufferedDC(None, self.buffer)
                        dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
                self.DrawLines(dc)
                self.reInitBuffer = False

        def LoadImageFromFilename(self,imagefilename):
                self.imagefile = imagefilename
                self.image = wx.Image(self.imagefile)
                self.reInitBuffer = True
                self.Refresh(True)

        def SetColour(self,colour):
                self.colour = colour
                self.pen = 
wx.Pen(wx.NamedColour(self.colour),self.thickness,wx.SOLID)

        def SetThickness(self,num):
                self.thickness = num
                self.pen = 
wx.Pen(wx.NamedColour(self.colour),self.thickness,wx.SOLID)

        def LoadImage(self,animage):
                imgdat = base64.decodestring(animage.data)
                self.image = 
wx.EmptyImage(string.atoi(animage.width),string.atoi(animage.height))
                self.image.SetData(imgdat)
                self.reInitBuffer = True

        def OnIdle(self,event):
                if self.reInitBuffer:
                        self.InitBuffer()
                        self.Refresh(False)

        def OnSize(self,event):
                self.reInitBuffer = True

        def OnPaint(self,event):
                dc = wx.BufferedPaintDC(self,self.buffer)

        def OnLeftDown(self,event):
                self.curLine = []
                self.x, self.y = event.GetPositionTuple()
                self.CaptureMouse()

        def OnLeftUp(self,event):
                if self.HasCapture():
                        self.lines.append((self.colour, self.thickness, 
self.curLine))
                        self.ReleaseMouse()

        def GetMarkup(self):
                return (self.colour, self.thickness, self.curLine)

        def DrawLines(self,dc):
                dc.BeginDrawing()
                for colour, thickness, line in self.lines:
                        pen = wx.Pen(wx.NamedColour(colour),thickness,wxSolid)
                        dc.SetPen(pen)
                        for coords in line:
                                apply(dc.Drawline, coords)
                dc.EndDrawing()

        def OnMotion(self,event):
                if event.Dragging() and event.LeftIsDown():
                        dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
                        dc = BeginDrawing()
                        dc.SetPen(self.pen)
                        pos = event.GetPositionTuple()
                        coords = (self.x,self.y) + pos
                        self.curLine.append(coords)
                        dc.DrawLine(self.x,self.y,pos[0],pos[1])
                        self.x,self.y = pos
                        dc.EndDrawing()

#
#       Define the shared image viewer class here
#
class SharedImageViewer( wx.App ):
        """
        Handle image viewing and sharing of image and markup data
        """
        def OnInit(self):
                return 1

        def OnExit(self):
                self.sharedAppClient.Shutdown()
                self.frame.Close(True)
                os._exit(1)

        def __init__(self, appUrl, venueUrl, name):
                wx.App.__init__(self, False)
                self.sharedAppClient = SharedAppClient(name)
                self.log = self.sharedAppClient.InitLogging()
                self.markupdataname = "MarkupData"
                self.imagedataname = "ImageFile"

                # Get a Client Profile
                try:
                        clientProfileFile = 
os.path.join(UserConfig.instance().GetConfigDir(), "profile")
                        clientProfile = ClientProfile(clientProfileFile)
                except:
                        self.log.info("SharedAppClient.Connect: Could not load 
client profile, set clientProfile = None")
                        clientProfile = None

                self.sharedAppClient.Join(appUrl,clientProfile)
                self.dataStoreClient = GetVenueDataStore(venueUrl)
                
self.sharedAppClient.RegisterEventCallback("NewImage",self.HandleNewImage)
                
self.sharedAppClient.RegisterEventCallback("NewMarkup",self.HandleNewMarkup)
                self.frame = ViewerFrame(None,-1)
                self.window = ViewerWindow(self.frame, -1)
                self.window.Bind(wx.EVT_LEFT_UP,self.ShareMarkup)
                #EVT_LEFT_UP(self.window,self.ShareMarkup)
                self.frame.Bind(wx.EVT_MENU,self.On_Open,id=ID_OPEN)
                self.frame.Bind(wx.EVT_MENU,self.On_OpenVenue,id=ID_OPEN_VENUE)
                self.frame.Bind(wx.EVT_MENU,self.OnExit,id=ID_EXIT)
                #EVT_MENU(self.frame,ID_OPEN,self.On_Open)
                #EVT_MENU(self.frame,ID_OPEN_VENUE,self.On_OpenVenue)
                #EVT_MENU(self.frame,ID_EXIT,self.OnExit)
                keys = self.frame.menuColours.keys()
                for k in keys:
                        self.frame.Bind(wx.EVT_MENU,self.OnMenuSetColour,id=k)
                        #EVT_MENU(self.frame,k,self.OnMenuSetColour)
                #dt = BIFileDropTarget(self.frame)
                #self.frame.SetDropTarget(dt)
                # see if there is an image in the venue and load it up
                animage = self.sharedAppClient.GetData(self.imagedataname)
                if animage == "":
                        self.log.info("SharedAppViewer: no image in venue")
                else:
                        print "try to download ", animage
                        self.log.info("SharedAppViewer: initial image found")
                        localImageFile = self.DownloadFile(animage)
                        self.window.LoadImageFeomFilename(localImageFile)
                        title = os.path.split(localImageFile)[-1]
                        self.frame.SetTitle(title)
                # see if there is markup in the venue and load it up
                scribble = self.sharedAppClient.GetData(self.markupdataname)
                if scribble == "":
                        self.log.info("SharedAppViewer: no markup in venue")
                else:
                        self.wind.lines = cPickle.loads(scribble)
                self.frame.Show(1)
                self.SetTopWindow(self.frame)


        def On_Open(self,event):
                dir = os.getcwd()
                dlg = ImageDialog(self.frame,dir)
                dlg.Centre()
                if dlg.ShowModal() == wx.ID_OK:
                        self.window.lines = []
                        localImageFile = dlg.GetFile()
                        venueImageFile =self.UploadFile(localImageFile)
                        file = os.path.split(localImageFile)[-1]
                        self.sharedAppClient.SetData(self.imagedataname,file)
                        self.window.LoadImageFromFilename(localImageFile)
                        self.sharedAppClient.SendEvent("NewImage",file)

        def On_OpenVenue(self,event):
                self.dataStoreClient.LoadData()
                dlg = wx.SingleChoiceDialog(self.frame,"Select an image file to 
load", "Load Venue Image Dialog",
                                                
self.dataStoreClient.dataIndex.keys())

                if dlg.ShowModal() == wx.ID_OK:
                        venueImageFile = dlg.GetStringSelection()
                        localImageFile = self.DownloadFile(venueImageFile)
                        self.sharedAppClient.SetData(self.imagedataname, 
venueImageFile)
                        file = os.path.split(localImageFile)[-1]
                        self.sharedAppClient.SendEvent("NewImage",file)
                        self.wind.LoadImageFeomFilename(localImageFile)
                        title = os.path.split(localImageFile)[-1]
                        self.frame.SetTitle(title)

        def UploadFile(self,localFile):
                self.dataStoreClient.Upload(localFile)
                file = os.path.split(localFile) [-1]
                venueDataUrl = os.path.join(self.dataStoreClient.uploadURL,file)
                return venueDataUrl

        def DownloadFile(self,venueDataUrl):
                file = os.path.split(venueDataUrl) [-1]
                #path = os.path.join(Platform.GetTempDir(),file)
                self.dataStoreClient.LoadData()
                self.dataStoreClient.Download(venueDataUrl,file)
                return file

        def HandleNewImage(self,eventdata):
                (senderid,venueImageFile) = eventdata.data
                if senderId != self.sharedAppClient.GetPublicId():
                        try:
                                localImageFile = 
self.DownloadFile(venueImageFile)
                                #load the image
                        except:
                                self.log.exception("SharedImageViewer: could 
not load image file from venue")

        def ShareMarkup(self,eventdata):
                self.window.OnLeftUp()
                # retrieve the markup that is stored in the venue
                scribble = self.sharedAppClient.GetData(self.markupdataname)
                if scribble == None:
                        self.log.info("SharedImageViewer: no markup in venue")
                        markup = []
                else:
                        markup = cPickle.loads(scribble)
                markup.append(self.window.GetMarks())
                
self.sharedAppClient.SetData(self.markupdataname,cPickle.dumps(markup,0))
                self.sharedAppClient.SendEvent("NewMarks",None)

        def OnMenuSetColour(self,eventdata):
                self.window.colour = self.frame.menuColours[eventdata.GetId()]
                self.window.pen = 
wx.Pen(wx.NamedColour(self.window.colour),self.window.thickness,wx.SOLID)

        def HandleNewMarkup(self,eventdata):
                (senderId,markslist) = eventdata.data
                if senderId != self.sharedAppClient.GetPublicId():
                        try:
                                self.window.thickness = markslist[0]
                                
self.window.lines.append((markslist[0],markslist[1],markslist[2]))
                                self.window.reInitBuffer = True
                                self.window.Refresh(True)
                        except:
                                self.log.exception("SharedImageViewer: whacked 
markup import")

class ArgumentManager:
        """
        stolen from the shared browser app and modified slightly for our use
        """
        def __init__(self):
                self.arguments = {}
                self.arguments['applicationUrl'] = None
                self.arguments['venueUrl'] = None
                self.arguments['debug'] = 0

        def GetArguments(self):
                return self.arguments

        def Usage(self):
                print "%s:" % sys.argv[0]
                print "     -a|--applicationURL : <url to application in venue>"
                print "     -v|--venueURL : <url to venue>"
                print "     -d|--debug : <enables debug output>"
                print "     -h|--help : <print usage>"

        def ProcessArgs(self):
                try:
                        opts,args = getopt.getopt(sys.argv[1:], "a:v:d:h",
                                 ["applicationURL=","venueURL=","debug","help"])
                except getopt.GetoptError:
                        self.Usage()
                        sys.exit(2)
                for o, a in opts:
                        if o in ("-a", "--applicationURL"):
                                self.arguments["applicationUrl"] = a
                        elif o in ("-v", "--venueURL"):
                                self.arguments["venueUrl"] = a
                        elif o in ("-d", "--debug"):
                                self.arguments["debug"] = 1
                        elif o in ("-h", "--help"):
                                self.Usage()
                                self.exit(0)

if __name__ == "__main__":
        #app = WXGUIApplication()
        app = CmdlineApplication.instance()
        name = "SharedImageViewer"
        am = ArgumentManager()
        am.ProcessArgs()
        aDict = am.GetArguments()
        appUrl = aDict['applicationUrl']
        venueUrl = aDict['venueUrl']
        debugMode = aDict['debug']
        init_args = []
        if "--debug" in sys.argv or "-d" in sys.argv:
                init_args.append("--debug")
        #app.Initialize(name)
        app.Initialize(name,args=init_args)
        #if not appUrl:
        #        am.Usage()
        #elif not venueUrl:
        #        am.Usage()
        #else:
        appUrl = "https://141.142.64.5:9000/119";
        venueUrl = "https://venues.ncsa.uiuc.edu:9000/Venues/default";
        wx.InitAllImageHandlers()
        iv = SharedImageViewer(appUrl,venueUrl,name)
        iv.MainLoop()

Reply via email to