mirror of
https://gitlab.com/fabinfra/fabaccess/borepin.git
synced 2025-03-12 14:51:44 +01:00
send greeting
This commit is contained in:
parent
3961c25ad4
commit
ac7acc9f72
83
FabAccessAPI/Connection.cs
Normal file
83
FabAccessAPI/Connection.cs
Normal file
@ -0,0 +1,83 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Capnp;
|
||||
using FabAccessAPI.Schema;
|
||||
using S22.Sasl;
|
||||
|
||||
namespace FabAccessAPI
|
||||
{
|
||||
class Connection
|
||||
{
|
||||
public bool Connect(Greeting clientInfo, Stream stream)
|
||||
{
|
||||
var message = new Message()
|
||||
|
||||
{
|
||||
Greet = clientInfo,
|
||||
which = Message.WHICH.Greet,
|
||||
};
|
||||
|
||||
var msg = MessageBuilder.Create();
|
||||
var root = msg.BuildRoot<Schema.Message.WRITER>();
|
||||
message.serialize(root);
|
||||
|
||||
var pump = new FramePump(stream);
|
||||
pump.Send(msg.Frame);
|
||||
|
||||
var frame = Framing.ReadSegments(stream);
|
||||
|
||||
var deserializer = DeserializerState.CreateRoot(frame);
|
||||
var reader = new Message.READER(deserializer);
|
||||
|
||||
switch (reader.which)
|
||||
{
|
||||
case Message.WHICH.Greet:
|
||||
var serverInfo = reader.Greet;
|
||||
Console.WriteLine($"Server: {serverInfo.Host}");
|
||||
Console.WriteLine($"Version: {serverInfo.Program}");
|
||||
Console.WriteLine($"API-Version: {serverInfo.Major}.{serverInfo.Minor}");
|
||||
break;
|
||||
case Message.WHICH.Leave:
|
||||
var leave_inner = reader.Leave;
|
||||
switch (leave_inner.TheReason)
|
||||
{
|
||||
case Leave.Reason.incompatible:
|
||||
Console.WriteLine($"Connection aborted due to incompatible API: {leave_inner.Message}");
|
||||
break;
|
||||
case Leave.Reason.other:
|
||||
Console.WriteLine($"Connection aborted: {leave_inner.Message}");
|
||||
break;
|
||||
default:
|
||||
Console.WriteLine($"Got invalid This should never happen: {leave_inner.Message}");
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
Console.WriteLine($"Got unexpected message: {reader.which}");
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
//FIXME: Replace the hardcoded credentials
|
||||
SaslMechanism m = SaslFactory.Create("PLAIN");
|
||||
m.Properties.Add("Username", "test");
|
||||
m.Properties.Add("Password", "secret");
|
||||
|
||||
var authRequest = new Request()
|
||||
{
|
||||
Mechanism = m.Name,
|
||||
|
||||
};
|
||||
|
||||
var auth = new AuthMessage()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user