Skip to content

Work on background with sync #19

@LuigiBertoneri

Description

@LuigiBertoneri

Hi, I need to create a method that reads messages synchronously and all the logic needs to stay within this method.
I looked for a solution on documents and blogs but with no luck, hope this is the right place.

For login I use loginAndWait, but for messages I have to use EventHandler.
Is there a synchronous method in which I can receive the MessageModules?

Can you give us a sample or an idea on how to do it? something like:

func readAllMessageSync(){
	let client = XMPPClient()
	client.modulesManager.register(AuthModule())
	client.modulesManager.register(StreamFeaturesModule())
	client.modulesManager.register(SaslModule())
	client.modulesManager.register(ResourceBinderModule())
	client.modulesManager.register(SessionEstablishmentModule())
	client.modulesManager.register(PresenceModule())
	client.modulesManager.register(MessageModule())

	client.connectionConfiguration.userJid = BareJID("jidSamle")
	client.connectionConfiguration.credentials = .password(password: "jidSamlePass", authenticationName: nil, cache: nil)

	try await client.loginAndWait()
	
	let presenceModule: PresenceModule = client.modulesManager.getModule(PresenceModule.ID)!	
	presenceModule.setPresence(show: Presence.Show.dnd, status: "Do not distrub me!", priority: 2)
	
	try await readIncomingMessage(client)
}

func readIncomingMessage(client: XMPPClient){
	//exit if 0 message else get message as MessageModule.MessageReceivedEvent
}
        

thank you
Luigi

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions