> On 6 Mar 2015, at 11:34, Dave <d...@looktowindward.com> wrote:
> 
> Hi,
> 
>> I think you might need to provide some more info about your architecture and 
>> I also think you need to ask your questions in the xpc devforums list: 
>> https://devforums.apple.com/community/mac/coreos/xpc 
>> <https://devforums.apple.com/community/mac/coreos/xpc> because if you get an 
>> answer there it is more likely to be well informed.
> 
> Thanks Kevin, I’ll take a look at the XPC forum.
> 
>> I am a little confused by your terminology. I’d call an Application a 
>> process that a user interacts with (that displays the menu bar) but I 
>> wouldn’t call the four items listed above Applications.
> 
> 
> Yes, it is confusing and I think I called it this because it’s referred to as 
> a “Faceless Background Application” (FBA) in some places. I’ve just started 
> this project and I’m a little confused about some of the things I need to do 
> myself, but I think I have it clear in my head what is needed now, there are 
> two things that are needed:
> 
> 1.  Have some kind of background monitor (FBA?) that detects certain 
> conditions and when a trigger condition is met, send it to a regular Mac 
> Application (with a UI). There is no need for any of the Application(s) to 
> send anything to this FBA. 

This approach will awkward to implement because it is opposite to the way XPC 
is designed. The XPC design is intended for a process such as a (LoginItem, 
LaunchAgent, LaunchDaemon, XPC service) to provide a service, so when your GUI 
Application needs a task to be done that is provided by a service it sends that 
service a message which the service handles and then sends a reply back to the 
application using the connection initiated by the application.

It is likely possible to achieve the opposite goal by the application first 
sending a message to your monitor and the monitor keeps the connection open, 
details of how to achieve this other than just waiting to reply until the 
monitor trigger condition is met I can’t help with. 

> 
> 2.  Have some kind of “Service" that owns an SQLite database and allows other 
> applications to send read/write requests to it.

This would be a launch agent or a login item.

> 
> I was confusing the two before, probably because in the specification I have, 
> the two are shown as one unit.  At the moment I am concentrating on the 
> Monitor (1) above, as the database manager is not needed until further on in 
> the project.
> 
> Given the that I have two “applications” (for want of a better term) 
> LTWMonitor and LTWAppX, then on the face of it and ignoring any OS 
> requirements for the moment, this is what needs to happen:
> 
> LTWMonitor will be Launched when the User Logs.
> LTWMonitor will then launch LTWAppX as part of its initialisation. 
> LTWAppX will launch and do nothing, waiting for an “Event” from LTWMonitor.

If I was you I would consider putting your LTWAppX in the list of the users 
login items and after it starts it launches the monitor by sending the monitor 
a XPC request.

> 
> Once this has happened:
> 
> If LTWMonitor detects a Trigger condition, it will send it to LTWAppX.
> When LTWAppX receives the message from LTWMonitor, it take the appropriate 
> Actions (e.g. display an appropriate UI) for the message received.
> 
> Given this, should I be considering XPC for the UIMonitor? One concern I have 
> it what it needs to be very responsive and as far as I know XPC is the 
> fastest solution and is the preferred modern way of achieving this.

Performance wise I am happy with XPC but then your requirements may be 
different.

Kevin


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to