Difference between revisions of "CPDistributedMessagingCenter"

From iPhone Development Wiki
Jump to: navigation, search
(Created page with '{{occlass|library=AppSupport.framework}} CPDistributedMessagingCenter is a simple wrapper over the existing messaging facilities in the operating system. It provides two-way…')
 
m
Line 15: Line 15:
  
 
- (NSDictionary *)handleMessageNamed:(NSString *)name withUserInfo:(NSDictionary *)userinfo {
 
- (NSDictionary *)handleMessageNamed:(NSString *)name withUserInfo:(NSDictionary *)userinfo {
     // ...
+
     // Process userinfo (simple dictionary) and return a dictionary (or nil)
 
}
 
}
  
Line 29: Line 29:
  
 
// One-way (message only)
 
// One-way (message only)
[messagingCenter sendMessageName:@"message" userInfo:nil];
+
[messagingCenter sendMessageName:@"message" userInfo:/* optional dictionary. in this example it will be ignored. */];
  
 
// Two-way (wait for reply)
 
// Two-way (wait for reply)
 
NSDictionary *reply;
 
NSDictionary *reply;
reply = [messagingCenter sendMessageAndReceiveReplyName:@"messageThatHasInfo" userInfo:/* dictionary */];
+
reply = [messagingCenter sendMessageAndReceiveReplyName:@"messageThatHasInfo" userInfo:/* optional dictionary */];
 
</source>
 
</source>
  
 
== Header ==
 
== Header ==
 
* http://github.com/kennytm/iphone-private-frameworks/blob/master/AppSupport/CPDistributedMessagingCenter.h
 
* http://github.com/kennytm/iphone-private-frameworks/blob/master/AppSupport/CPDistributedMessagingCenter.h

Revision as of 23:42, 21 September 2009


CPDistributedMessagingCenter is a simple wrapper over the existing messaging facilities in the operating system. It provides two-way communication between different processes using simple messages and dictionaries. All dictionaries transferred must be easily flattenable or contain only simple objects.

Server

CPDistributedMessagingCenter *messagingCenter;
// Center name must be unique, recommend using application identifier.
messagingCenter = [CPDistributedMessagingCenter centerNamed:@"unique.name.for.messaging.center"];
[messagingCenter runServerOnCurrentThread];

// Register Messages
[messagingCenter registerForMessageName:@"messageThatHasInfo" target:self selector:@selector(handleMessageNamed:withUserInfo:)];
[messagingCenter registerForMessageName:@"message" target:self selector:@selector(handleSimpleMessageNamed:)];

- (NSDictionary *)handleMessageNamed:(NSString *)name withUserInfo:(NSDictionary *)userinfo {
    // Process userinfo (simple dictionary) and return a dictionary (or nil)
}

- (void)handleSimpleMessageNamed:(NSString *)name {
    // ...
}

Client

CPDistributedMessagingCenter *messagingCenter;
messagingCenter = [CPDistributedMessagingCenter centerNamed:@"unique.name.for.messaging.center"];

// One-way (message only)
[messagingCenter sendMessageName:@"message" userInfo:/* optional dictionary. in this example it will be ignored. */];

// Two-way (wait for reply)
NSDictionary *reply;
reply = [messagingCenter sendMessageAndReceiveReplyName:@"messageThatHasInfo" userInfo:/* optional dictionary */];

Header