Cleaned up message sending

This commit is contained in:
William LaFrance 2018-04-03 20:35:03 -05:00
parent d44a872cce
commit 3d84c13314
2 changed files with 14 additions and 34 deletions

View File

@ -22,8 +22,6 @@ class BattleNetHandler: ChannelInboundHandler {
private var state: BattleNetConnectionStatus = .disconnected(error: nil) {
didSet {
print("[BNCS] Status changed from \(oldValue) to \(state).")
switch state {
case .connecting:
print("[BNCS] Connecting...")
@ -98,6 +96,12 @@ class BattleNetHandler: ChannelInboundHandler {
/// MARK -
func sendMessage(_ message: BncsMessage) {
var buffer = netChannel.allocator.buffer(capacity: message.data.count)
buffer.write(bytes: message.data.arrayOfBytes())
netChannel.writeAndFlush(buffer, promise: nil)
}
func monitorDefunctValues<T: Comparable>(value: T, expected: T, description: String) {
if value != expected {
print("[BNCS] Unexpected value in defunct field. Description: \(description), value: \(value).")
@ -123,8 +127,7 @@ class BattleNetHandler: ChannelInboundHandler {
composer.write(0 as UInt32)
composer.write("USA")
composer.write("United States")
let authInfoMessage = composer.build(messageIdentifier: BncsMessageIdentifier.AuthInfo)
let _ = authInfoMessage.writeToChannel(netChannel)
sendMessage(composer.build(messageIdentifier: BncsMessageIdentifier.AuthInfo))
}
func processMessage(_ message: BncsMessage) {
@ -132,15 +135,13 @@ class BattleNetHandler: ChannelInboundHandler {
switch consumer.message.identifier {
case .Null:
let _ = BncsMessageComposer().build(messageIdentifier: .Null).writeToChannel(netChannel)
print("[BNCS] Keep-alive.")
sendMessage(BncsMessageComposer().build(messageIdentifier: .Null))
case .Ping:
let cookie = consumer.readUInt32()
var composer = BncsMessageComposer()
composer.write(cookie)
let _ = composer.build(messageIdentifier: .Ping).writeToChannel(netChannel)
print("[BNCS] Ping.")
sendMessage(composer.build(messageIdentifier: .Ping))
case .AuthInfo:
print("[BNCS] Received auth challenge.")
@ -172,8 +173,7 @@ class BattleNetHandler: ChannelInboundHandler {
composer.write(checkRevisionResults.info)
composer.write("SwiftBot")
print("[BNCS] Sending auth check...")
let authCheckMessage = composer.build(messageIdentifier: BncsMessageIdentifier.AuthCheck)
let _ = authCheckMessage.writeToChannel(netChannel)
sendMessage(composer.build(messageIdentifier: BncsMessageIdentifier.AuthCheck))
} catch (let error) {
print("Error calculating CheckRevision(): \(error)")
}
@ -191,8 +191,7 @@ class BattleNetHandler: ChannelInboundHandler {
composer.write(serverToken)
composer.write(passwordHash)
composer.write(BotConfig.username) // username
let logonResponseMessage = composer.build(messageIdentifier: BncsMessageIdentifier.LogonResponse2)
let _ = logonResponseMessage.writeToChannel(netChannel)
sendMessage(composer.build(messageIdentifier: BncsMessageIdentifier.LogonResponse2))
} else {
print("[BNCS] Auth check failed. \(authCheckResult)")
@ -218,16 +217,16 @@ class BattleNetHandler: ChannelInboundHandler {
var enterChatComposer = BncsMessageComposer()
enterChatComposer.write("")
enterChatComposer.write("")
let _ = enterChatComposer.build(messageIdentifier: .EnterChat).writeToChannel(netChannel)
sendMessage(enterChatComposer.build(messageIdentifier: .EnterChat))
var joinChannelComposer = BncsMessageComposer()
joinChannelComposer.write(1 as UInt32) // first join -- contrary to bnet docs, 1 is used by D2 as well
joinChannelComposer.write("Diablo II") // channel name
let _ = joinChannelComposer.build(messageIdentifier: .JoinChannel).writeToChannel(netChannel)
sendMessage(joinChannelComposer.build(messageIdentifier: .JoinChannel))
var chatCommandComposer = BncsMessageComposer()
chatCommandComposer.write("/join \(BotConfig.homeChannel)")
let _ = chatCommandComposer.build(messageIdentifier: .ChatCommand).writeToChannel(netChannel)
sendMessage(chatCommandComposer.build(messageIdentifier: .ChatCommand))
default:
print("[BNCS] Logon failed: \(status).")

View File

@ -1,19 +0,0 @@
//
// MessageExtension.swift
// SwiftBncsLibPackageDescription
//
// Created by William LaFrance on 3/9/18.
//
import SwiftBncsLib
import NIO
public extension SwiftBncsLib.Message {
public func writeToChannel(_ channel: Channel) -> EventLoopFuture<Void> {
var buffer = channel.allocator.buffer(capacity: self.data.count)
buffer.write(bytes: self.data.arrayOfBytes())
return channel.writeAndFlush(buffer)
}
}