mirror of
https://gitlab.com/fabinfra/fabaccess/borepin.git
synced 2025-03-13 15:21:45 +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