From: Christiaan H. <chr...@we...> - 2006-04-25 16:42:23
|
On 25 Apr 2006, at 7:24 PM, Adam Maxwell wrote: > One of these days we're going to have to release a new version > (hopefully soon...what outstanding issues do we have?). [newVersion release] AFAIC. > When we do that, we run the risk of having to add more methods to > the sharing protocols, which will (potentially) break compatibility > between versions of BibDesk. > What are you thinking of? You want to add other sharing features apart from sharing the pubs? > I was trying to think of a way around this, and wondered if adding > a generic -performInvocation: method to the protocols might be > useful? We could then check the selector of the invocation on the > target side and fail gracefully if it wasn't implemented (log a > message telling the user to update), instead of having DO check for > us before sending the message (slow). That would give us the main > advantage of the protocols (speed), and some flexibility for adding > a couple of methods. > > -- > Adam I don't think DO is very slow, as it is not done over the connection, because we set the protocolForProxy. Also the protocolChecker checks just on the receiving end and does not communicate when it fails. It's never slower than what we could do, rather faster. In fact using a generic performInvocation method would force us to do the check (if we want to keep this level of security), so we can't simply use of all the nice built in checks and it will be slower. We could also check for the version in the code, something like if (remoteServerVersion >= requiredVersionForNewMessage) { [[self remoteServer] sendNewMessage]; } We could also let the client tell the server its version if we want to do the same thing for the other direction. And instead of giving up immediately when the version is not the same, only give up if the version is smaller than some minimum required version. Christiaan |