forked from cellularmitosis/ADC-reference-library-2009-july
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlisting5.html
More file actions
executable file
·289 lines (230 loc) · 10.5 KB
/
Copy pathlisting5.html
File metadata and controls
executable file
·289 lines (230 loc) · 10.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<!-- BEGIN META TAG INFO -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="home" href="http://developer.apple.com/">
<link rel="find" href="http://developer.apple.com/search/">
<link rel="stylesheet" type="text/css" href="../../documentation/css/adcstyle.css" title="fonts">
<script language="JavaScript" src="../../documentation/js/adc.js" type="text/javascript"></script>
<!-- END META TAG INFO -->
<!-- BEGIN TITLE -->
<title>TrivialThreads - /TransferServer.m</title>
<!-- END TITLE -->
<script language="JavaScript">
function JumpToNewPage() {
window.location=document.scpopupmenu.gotop.value;
return true;
}
</script>
</head>
<!-- BEGIN BODY OPEN -->
<body>
<!--END BODY OPEN -->
<!-- START CENTER OPEN -->
<center>
<!-- END CENTER OPEN -->
<!-- BEGIN LOGO AND SEARCH -->
<!--#include virtual="/includes/adcnavbar"-->
<!-- END LOGO AND SEARCH -->
<!-- START BREADCRUMB -->
<div id="breadcrumb">
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td scope="row"><img width="340" height="10" src="images/1dot.gif" alt=""></td>
<td><img width="340" height="10" src="images/1dot.gif" alt=""></td>
</tr>
<tr valign="middle">
<td align="left" colspan="2">
<a href="http://developer.apple.com/">ADC Home</a> > <a href="../../referencelibrary/index.html">Reference Library</a> > <a href="../../samplecode/index.html">Sample Code</a> > <a href="../../samplecode/Cocoa/index.html">Cocoa</a> > <a href="../../samplecode/Cocoa/idxProcessManagement-date.html">Process Management</a> > <A HREF="javascript:location.replace('index.html');">TrivialThreads</A> >
</td>
</tr>
<tr>
<td colspan="2" scope="row"><img width="680" height="35" src="images/1dot.gif" alt=""></td>
</tr>
</table>
</div>
<!-- END BREADCRUMB -->
<!-- START MAIN CONTENT -->
<!-- START TITLE GRAPHIC AND INTRO-->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td><h1><div id="pagehead">TrivialThreads</div></h1></td>
</tr>
</table>
<!-- END TITLE GRAPHIC AND INTRO -->
<!-- START WIDE COLUMN -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td id="scdetails">
<h2>/TransferServer.m</h2>
<form name="scpopupmenu" onSubmit="return false;" method=post>
<p><strong>View Source Code:</strong>
<select name="gotop" onChange="JumpToNewPage();" style="width:340px"><option selected value="ingnore">Select File</option>
<option value="listing1.html">/Controller.h</option>
<option value="listing2.html">/Controller.m</option>
<option value="listing3.html">/main.m</option>
<option value="listing4.html">/TransferServer.h</option>
<option value="listing5.html">/TransferServer.m</option></select>
</p>
</form>
<p><strong><a href="TrivialThreads.zip">Download Sample</a></strong> (“TrivialThreads.zip”, 55.3K)<BR>
<strong><a href="TrivialThreads.dmg">Download Sample</a></strong> (“TrivialThreads.dmg”, 116.7K)</p>
<!--
<p><strong><a href="#">Download Sample</a></strong> (“filename.sit”, 500K)</p>
-->
</td>
</tr>
<tr>
<td scope="row"><img width="680" height="10" src="images/1dot.gif" alt=""><br>
<img height="1" width="680" src="images/1dot_919699.gif" alt=""><br>
<img width="680" height="20" src="images/1dot.gif" alt=""></td>
</tr>
<tr>
<td scope="row">
<!--googleon: index -->
<pre class="sourcecodebox">/* File: TransferServer.m Contains: Sample server object, talked to through Distributed Objects. Written by: Quinn "The Eskimo!" Created: Tue 10-Jun-1997 Copyright: (c)1997 by Apple Computer, Inc., all rights reserved. Change History (most recent first): You may incorporate this sample code into your applications without restriction, though the sample code has been provided "AS IS" and the responsibility for its operation is 100% yours. However, what you are not permitted to do is to redistribute the source as "DSC Sample Code" after having made changes. If you're going to re-distribute the source, we require that you make it clear in the source that the code was descended from Apple Sample Code, but that you've made changes.*/#import "TransferServer.h"#import "Controller.h"// IMPORTANT: See the documentation ("ReadMe.rtf" under Supporting Files) for// big picture information about this project.@implementation TransferServer+ (void)connectWithPorts:(NSArray *)portArray // See comments in implementation part.{ NSAutoreleasePool *pool; NSConnection *connectionToController; TransferServer *serverObject; // First we must create an autorelease pool. Methods that we invoke // are going to expect to be able to do [object autorelease], but this // doesn't work unless we explicitly create an autorelease pool because // we're running in a new thread, and threads don't start off with a // default autorelease pool. pool = [[NSAutoreleasePool alloc] init]; // Now we connect back to the main thread using the ports given in our // portArray argument. Note the subtle difference in that we use // connectWithReceivePort here, whereas Controller's init method uses // initWithReceivePort. connectionToController = [NSConnection connectionWithReceivePort:[portArray objectAtIndex:0] sendPort:[portArray objectAtIndex:1]]; // Now create a server object. In this example, we only have one server // object to handle all requests. serverObject = [[self alloc] init]; // Now get the proxy of the root object at the other end of the connection // (which was set to be the controller object in Controller's init method) // and send it the setServer message so that it knows about our server object. // Note that there is nothing magic about the method name "setServer"; it's // merely the name I decided to use when designing these two objects. [ ((Controller *)[connectionToController rootProxy]) setServer:serverObject]; // We now release our server object, so the controller has the only reference // to it. [serverObject release]; // Now we enter our run loop. The run loop waits looking for events and // executes them. In the case of a non-application thread, the source // of events is the NSConnections installed in the loop. In our case, this // in the NSConnection we created earlier in this routine. When a DO // message arrives on our receive port, the run loop unpackages the message // and executes the corresponding Objective-C method. [[NSRunLoop currentRunLoop] run]; // Clean up. [pool release]; //TIMC 3/17/98 -- commented this line out. If [NSThread exit] is called, the thread terminates //immediately. Unfortunately, this means that the code in NSThread that releases the parameters //is not executed, so you'd leak the parameters. That code runs immediately after this function //completes. //[NSThread exit]; return;}- (id)init // See comments in interface part.{ self = [super init]; if (self != nil) { transferCount = 0; } return (self);}- (oneway void)slowTransfer:(Controller *)controller // See comments in interface part.{ long i; transferCount += 1; [controller outputString:[NSString stringWithFormat:@"Starting slowTransfer %d...\n", transferCount]]; for (i = 0; i < 3; i++) { // Sleep for 1 second and then output a progress string to the controller. // You could substitute any other synchronous activity here, such as an // extended computation, or blocking I/O (file system or network). [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]; [controller outputString:[NSString stringWithFormat:@" Doing slowTransfer %d, Step=%d...\n", transferCount , i] ]; } [controller outputString:[NSString stringWithFormat:@"Finished slowTransfer %d...\n", transferCount]];}- (oneway void)slowerTransfer:(Controller *)controller // See comments in interface part.{ long i; transferCount += 1; [controller outputString:[NSString stringWithFormat:@"Starting slowerTransfer %d...\n", transferCount]]; for (i = 0; i < 10; i++) { // See comment in slowTransfer:. [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]; [controller outputString:[NSString stringWithFormat:@" Doing slowerTransfer %d, Step=%d...\n", transferCount , i] ]; } [controller outputString:[NSString stringWithFormat:@"Finished slowerTransfer %d...\n", transferCount]];}@end</pre>
<!--googleoff: index -->
</td>
</tr>
</table>
<!-- END WIDE COLUMN -->
<!-- END MAIN CONTENT -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><div style="width: 100%; height: 1px; background-color: #919699; margin-top: 5px; margin-bottom: 15px"></div></td>
</tr>
<tr>
<td align="center"><br/>
<table border="0" cellpadding="0" cellspacing="0" class="graybox">
<tr>
<th>Did this document help you?</th>
</tr>
<tr>
<td>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=1&url=/samplecode/TrivialThreads/listing5.html%3Fid%3DDTS10000757-1.0&media=dvd" target=_new>Yes</a>: Tell us what works for you.</div>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=2&url=/samplecode/TrivialThreads/listing5.html%3Fid%3DDTS10000757-1.0&media=dvd" target=_new>It’s good, but:</a> Report typos, inaccuracies, and so forth.</div>
<div><a href="http://developer.apple.com/feedback/?v=3&url=/samplecode/TrivialThreads/listing5.html%3Fid%3DDTS10000757-1.0&media=dvd" target=_new>It wasn’t helpful</a>: Tell us what would have helped.</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- START BOTTOM APPLE NAVIGATION -->
<!--#include virtual="/includes/footer"-->
<!-- END BOTTOM APPLE NAVIGATION -->
<!-- START CENTER CLOSE -->
</center>
<!-- END CENTER CLOSE -->
</body>
</html>